我通过 SSH 登录到 Debian 7,而不是root
. 当一直写作sudo
变得太多开销时,我做到了sudo su
。由于 Debian 默认 shell ( 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
变量来确定您嵌套到登录过程启动的 shell 的距离:由于登录 shell 从clears 中
su -
清除SHLVL
,它具有SHLVL=1
. 要退出 shell 祖先中最近的此类登录 shell,您必须使用exit
$SHLVL
times。SHLVL
不支持dash
,所以一进图,图就错了。但是,dash
它不是 Ubuntu 上任何可用帐户的登录 shell,并且SHLVL
适用于更高级的 shell,如bash
和zsh
。我无法重现您的遗漏
sudo su
:您可以简单地使用
ps
不带参数的命令。这里我有 3 个嵌套的 bashes,所以 3 个出口要输入: