什么是终端的默认shell?
比方说,我打开了一个终端并输入/执行了一些shell命令。
但我没有明确调用Bash或任何其他shell。
默认情况下使用了什么shell?
您在/etc/passwd
行上指定的那个(它是:
分隔行,shell是最后一行)。
例如我的:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
这是/bin/bash
(Ubuntu默认)
你也可以使用chsh
:
$ chsh Password: Changing the login shell for chris Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:
这告诉我我的shell是/bin/bash
并让我改变它。
最后, echo $SHELL
也会这样做:
$ echo $SHELL /bin/bash
GNU Bash是默认情况下在Ubuntu终端上使用的shell。 但是,当在系统启动时执行脚本时,则使用dash,因为它是/ bin / sh的破折号。
这在$ SHELL环境变量中定义。 您可以在终端中键入echo $SHELL
进行检查。
键入以下内容将显示终端打开的shell:
echo $SHELL
但是,要找出您当前所在的shell(您可能已更改它),请键入
ps -p $$
例如,您将在示例输出中看到shell是bash
PID TTY TIME CMD 3500 pts/0 00:00:01 bash
另一种方法是使用
echo $0
这将只返回当前shell的名称。
默认情况下是bash:
env | grep ^SHELL=
在大多数情况下会产生
SHELL=/bin/bash
要获取当前shell可执行文件的文件路径,可以使用
readlink -f /proc/$$/exe
一些可能的输出是:
-
/bin/bash
-
/usr/bin/bash
-
/usr/bin/zsh
-
/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh