开发者

How to exit multiple nested shells at once?

I have a host on which I don't have sudo. Its been setup with ksh, I'm too used to bash and chsh doesn't work. So I put in a /bin/bash as the first line in the .profile on the system.

So the result is, when I login to this system, it automat开发者_开发百科ically gets me into bash. However, when I exit the shell, not suprisingly I land up in ksh.

Any tricks to avoid this?


Use exec to replace the current process (shell) with the new process (shell).


I recommend two steps:

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

Or, you can compress that to:

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

You can then put the rest of your Bash profile after this. Note that probably you don't put a shebang on the first line - that will confuse things. Also, while testing, make sure you have a second connection (window) open so that you can adjust problems. It is annoying to get locked out by an erroneous profile.


You may write a script named myexit like this:

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

It sends the signal hang up (SIGHUP) to process attached to this terminal. And would not affect any process started up by nohup.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜