我读到终端不过是 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”,那么答案是这里。