什么是终端的默认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