我如何检查我正在使用哪个 shell?

我如何检查我正在使用哪个 shell?

我读到终端不过是 shell,而 Unix 提供了不同类型的 shell:

  • Bourne shell (sh)
  • C 外壳 (csh)
  • TC 外壳 (tcsh)
  • Korn shell (ksh)
  • Bourne Again shell(bash)

问题:

  • 当我打开终端窗口时,默认打开哪个 shell?
  • 如何检查安装了多少个 shell?
  • 如何更改我的帐户使用的 shell?

答案1

您可以在终端中输入以下命令来查看您正在使用的 shell:

echo $0

如果您使用狂欢重回重生壳牌) 终端:

-bash

答案2

要找到默认环境中的 shell,您可以检查SHELL环境变量的值:

echo $SHELL

要找到当前 shell 实例,请查找具有当前 shell 实例 PID 的进程(shell)。

查找当前 shell 实例的 PID:

echo "$$"

现在查找具有 PID 的进程:

ps -p <PID>

把它放在一起:

ps -p "$$"

答案3

$SHELL为您提供默认 shell。 $0为您提供当前 shell。

例如:我的默认 shell 是 bash,用于我的终端应用程序。但对于我的 iTerm2 应用程序,我在窗口打开时使用以下命令:/bin/ksh

所以我 在 iTerm2 上 $0给我。在 iTerm2 上 给我。 ,在终端上给我/bin/ksh$SHELL/bin/bash$0$SHELL/bin/bash

答案4

原始帖子提出了三个问题。给出的答案确实涵盖了第一个问题,“当我打开终端窗口时,默认打开哪个 shell?”它们还回答了一个没有被问到的问题,即“我如何才能知道终端中当前正在运行哪个 shell?”然而,据我所知,没有人回答最初提出的第二或第三个问题,即“我如何检查安装了多少个 shell?”和“我如何更改从我的帐户使用的 shell?”

  • 要回答“如何检查安装了多少个 shell?”以下命令将列出所有可用的 shell:

    cat /etc/shells
    

    例如,在 Ubuntu 18.10 的默认安装中,结果如下:

    # /etc/shells: valid login shells
    /bin/sh
    /bin/dash 
    /bin/bash
    /bin/rbash
    

    但是,默认情况下,sh 是指向 dash 的符号链接,而 rbash 则使用选项 -r(“受限 bash”)链接到 bash,因此实际上只有两个 shell,而不是上面列表所显示的四个。以下命令将显示列出的任何 shell 是否实际上是符号链接,如果是,则显示它们链接到的位置:ls -l /bin

  • 现在,对于“如何更改我的帐户使用的 shell?”这个问题,假设这意味着“如何永久更改终端将使用的默认 shell”,那么答案是这里

相关内容