Как выйти из нескольких вложенных оболочек одновременно? - PullRequest
1 голос
/ 10 марта 2011

У меня есть хост, на котором у меня нет sudo. Он был настроен с помощью ksh, я слишком привык к bash, а chsh не работает. Поэтому я ввел / bin / bash в качестве первой строки .profile в системе.

В результате, когда я захожу в эту систему, она автоматически приводит меня в bash. Однако, когда я выхожу из снаряда, не удивительно, что я приземляюсь в ksh.

Какие-нибудь хитрости, чтобы избежать этого?

Ответы [ 3 ]

7 голосов
/ 10 марта 2011

Используйте exec для замены текущего процесса (оболочки) новым процессом (оболочкой).

2 голосов
/ 10 марта 2011

Я рекомендую два шага:

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

Или вы можете сжать это до:

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

После этого вы можете поместить остальную часть вашего профиля Bash.Обратите внимание, что, вероятно, вы не ставите шебанг на первой строке - это может запутать вещи.Кроме того, во время тестирования убедитесь, что у вас открыто второе соединение (окно), чтобы вы могли решить проблемы.Досадно блокироваться ошибочным профилем.

0 голосов
/ 10 марта 2011

Вы можете написать скрипт с именем myexit, например:

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

Он отправляет сигнал зависания (SIGHUP) для обработки, подключенной к этому терминалу. И не повлияет на процесс, запущенный nohup.

...