Answers:
您可能应该尝试询问系统管理员,他们是否可以为您更改默认外壳程序。如果他们不能或不可以(例如我上大学时的情况),我使用的解决方法是添加
# Exec bash if using an interactive shell.
if ($?prompt) then
setenv SHELL /path/to/bash
exec $SHELL
endif
到.cshrc
。(当然,请确保替换/path/to/bash
为真实路径。bash
如果系统提供的版本对于您的口味来说太过时了,那么它甚至可以是位于您的主目录下的版本)。为了提高效率,最好在.cshrc
可行的情况下尽早执行此操作,这样就避免了其他.cshrc
过程,一旦bash
替换csh
过程将变得毫无意义。
您可以简单地与
ssh -t yourhost bash
登录时自动执行Bash Shell。
从下面的评论中,您可以看到替代方案
ssh -t yourhost exec bash
exec
将运行一个新进程并退出旧csh
进程,因此该进程将直接退出。
如果-l
在命令末尾追加作为Bash的参数,它将被视为登录外壳,但这也许不是必需的。
ssh -t yourhost exec -a bash -l bash
完全替换原始外壳,而不是在原始外壳中作为进程运行。
ssh -t host bash
在类似的情况下,我正在使用一个简单的解决方案,但是您的方法更好。我一点都没想过exec
,谢谢!我会根据您的建议更新帖子。
bash
内置命令使用了一些参数exec
。
-a
和上均失败-l
。我将在答案中修改示例。
我发现最好的解决方案是在stackexchange上解决问题。这是链接stackexchange,这是解决方案:
在您的主目录中创建一个.profile文件,然后粘贴以下内容;如果您已有一个,则将其添加到.profile的末尾。
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac
ldapmodify
可能有效。