如何一次退出多个嵌套shell?

时间:2011-03-10 07:45:49

标签: bash shell unix ksh

我有一个我没有sudo的主人。它是用ksh设置的,我太习惯了bash而且chsh不起作用。所以我把/ bin / bash作为系统中.profile的第一行。

结果是,当我登录到这个系统时,它会自动让我进入bash。但是,当我退出shell时,并不奇怪我在ksh中登陆。

要避免这种伎俩吗?

3 个答案:

答案 0 :(得分:7)

使用exec将当前进程(shell)替换为新进程(shell)。

答案 1 :(得分:2)

我建议采取两个步骤:

if [ $SHELL != /bin/bash ]
then SHELL=/bin/bash exec /bin/bash --login
fi

或者,您可以将其压缩为:

[ $SHELL != /bin/bash ] && SHELL=/bin/bash exec /bin/bash --login

然后,您可以在此之后放置剩余的Bash配置文件。请注意,可能你没有把一个shebang放在第一行 - 这会让事情变得混乱。此外,在测试时,请确保打开第二个连接(窗口),以便调整问题。被错误的个人资料锁定是很烦人的。

答案 2 :(得分:0)

您可以像这样编写一个名为myexit的脚本:

kill  -1 $(ps | sed 1d | awk '{print $1}')

它将信号挂起(SIGHUP)发送到连接到该终端的进程。 并且不会影响nohup启动的任何过程。