当前位置: 首页>>技术问答>>正文


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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2095.html,未经允许,请勿转载。