如果您通过 SSH 连接到 Ubuntu 机器,您将获得一个交互式登录 shell。区别如下:
交互式与非交互式:任何可以在提示符处键入的 shell 都是交互式的。事实上,许多脚本都会测试$PS1保存提示字符串的变量来确定它们是否是交互式的。如果 shell 正在执行 shell 脚本,那么它是非交互式的。
因此,如果您这样做ssh yourbox.example.com,您将获得一个交互式 shell(假设默认设置),而如果您这样做ssh yourbox.example.com mighty_shellscript.sh,您最终将得到一个非交互式 shell,并且您的 SSH 会话将在脚本终止时终止。
登录与非登录:当您从控制台或远程(例如 SSH)登录时,或者将选项传递-l给时bash,您将获得登录 shell。否则,例如当您打开终端窗口时,您将得到一个非登录 shell。
要测试 shell 是否是登录 shell,请检查其命令名称是否为-bash而不是bash:
ps -ef | grep [b]ash
Run Code Online (Sandbox Code Playgroud)