Как часто я могу ввести выход без того, чтобы выходить из системы?

Я вошел в систему Debian 7 через SSH, не как root. При записи sudo все время стал слишком много служебным, я сделал sudo su. Начиная с оболочки значения по умолчанию Debian (dash ?) не поддерживает клавишу Tab для завершения имен файлов, я работал /bin/bash. Я добавил несколько псевдонимов к .bash_aliases и активировать их, я работал /bin/bash снова (потенциально еще несколько раз), пока я не разобрался во всех псевдонимах.

После выполнения еще некоторой системной установки я не мог больше помнить, сколько раз я должен ввести exit возвращаться к началу, но не входу из SSH.

На самом деле это не грандиозное предприятие, так как я мог зарегистрировать на пути SSH снова, таким образом, это - больше академический вопрос. Я задался вопросом, существует ли способ узнать

  1. что точно exit выйдет, таким образом, я мог, по крайней мере, проверить каждый раз, прежде чем я введу его
  2. сколько раз я могу exit пока пользователь не выходится из системы полностью

Я попробовал man exit но кажется, что нет никакого доступного руководства. help exit не говорит очень также.

Я сначала думал, что мог найти использование возможного решения pstree, но по моему скромному мнению это перечисляет sshd слишком часто и sudo su отсутствует.

:~$ pstree | grep ssh
     |-sshd---sshd---sshd---sh---bash---bash-+-grep
2
задан 20 June 2015 в 01:33

2 ответа

Вы можете использовать переменную 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)
3
ответ дан 2 December 2019 в 02:22

Вы можете просто использовать команду 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
1
ответ дан 2 December 2019 в 02:22

Другие вопросы по тегам:

Похожие вопросы: