当我通过 ssh 进入 ubuntu 机器时,我使用的是哪种 shell

Tyl*_*itt 6 ssh bash shell ubuntu

我一直在阅读有关交互式、非交互式、登录和非登录 shell 的信息。

(这是在读取哪个 .bash* 文件的上下文中)。

我不明白每种类型的外壳是什么,所以让我们从基础开始。

如果我从我的 mac ssh 到我的 ubuntu 机器,什么类型的 shell 会被启动?

Sco*_*nce 4

如果您通过 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)