Я вошел в систему Debian 7 через SSH, не как root
. При записи sudo
все время стал слишком много служебным, я сделал sudo su
. Начиная с оболочки значения по умолчанию Debian (dash
?) не поддерживает клавишу Tab для завершения имен файлов, я работал /bin/bash
. Я добавил несколько псевдонимов к .bash_aliases
и активировать их, я работал /bin/bash
снова (потенциально еще несколько раз), пока я не разобрался во всех псевдонимах.
После выполнения еще некоторой системной установки я не мог больше помнить, сколько раз я должен ввести exit
возвращаться к началу, но не входу из SSH.
На самом деле это не грандиозное предприятие, так как я мог зарегистрировать на пути SSH снова, таким образом, это - больше академический вопрос. Я задался вопросом, существует ли способ узнать
exit
выйдет, таким образом, я мог, по крайней мере, проверить каждый раз, прежде чем я введу егоexit
пока пользователь не выходится из системы полностьюЯ попробовал man exit
но кажется, что нет никакого доступного руководства. help exit
не говорит очень также.
Я сначала думал, что мог найти использование возможного решения pstree
, но по моему скромному мнению это перечисляет sshd
слишком часто и sudo su
отсутствует.
:~$ pstree | grep ssh
|-sshd---sshd---sshd---sh---bash---bash-+-grep
Вы можете использовать переменную SHLVL
, чтобы определить, насколько далеко вы вложены в оболочку, запущенную процессом входа в систему:
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3
$ sudo su - # Start a login shell, clears $SHLVL
# echo $SHLVL
1
# logout
$ sudo su
# echo $SHLVL
4
# bash
# echo $SHLVL
5
Поскольку оболочка входа из su -
очищает SHLVL
], имеет SHLVL=1
. Чтобы выйти из ближайшей такой оболочки входа в наследство оболочки, вам нужно использовать exit
$SHLVL
раз.
SHLVL
не поддерживается dash
, поэтому всякий раз, когда он входит в изображение, рисунок будет неправильным. Тем не менее, dash
не является оболочкой входа в систему для какой-либо используемой учетной записи в Ubuntu, и SHLVL
работает на более продвинутых оболочках, таких как bash
и zsh
.
Я не могу воспроизвести ваш пропавший sudo su
:
$ pstree -ps $
init(1)───sshd(1404)───sshd(12614)───sshd(12673)───zsh(12674)───sudo(31012)───su(31014)───bash(31016)───pstree(31084)
Вы можете просто использовать команду ps
без аргументов. Здесь у меня есть 3 вложенных куста, поэтому 3 выхода для ввода:
~ $ ps
PID TTY TIME CMD
1986 pts/2 00:00:10 bash
31351 pts/2 00:00:00 bash
31399 pts/2 00:00:00 bash
31450 pts/2 00:00:00 ps