问题描述
比方说,我打开了一个终端并输入/执行了一些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