终端的默认 shell 是什么?

终端的默认 shell 是什么?

假设我打开了一个终端并输入/执行了一些 shell 命令。

但我没有明确调用 Bash 或任何其他 shell。

默认使用什么 shell?

答案1

您在行中指定的一个/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]:

这告诉我我的外壳是什么/bin/bash并让我改变它。

最后,echo $SHELL将执行相同的操作:

$ echo $SHELL
/bin/bash

答案2

输入以下命令将显示终端打开的 shell:

echo $SHELL

但是,要找出你当前所处的 shell(你可能已经更改了它),请输入

ps -p $$

例如你会看到 shell 是狂欢在示例输出中

  PID TTY          TIME CMD
 3500 pts/0    00:00:01 bash

另一种方法是使用

echo $0

这将仅返回当前 shell 的名称。

答案3

GNU Bash 是 Ubuntu 终端中默认使用的 shell。但是,当在系统启动时执行脚本时,将使用 dash,因为 dash 就是 /bin/sh。

这是在 $SHELL 环境变量中定义的。您可以echo $SHELL在终端中输入以下内容进行检查。

答案4

要获取当前 shell 可执行文件的文件路径,可以使用

readlink -f /proc/$$/exe

一些可能的输出是:

  • /bin/bash
  • /usr/bin/bash
  • /usr/bin/zsh
  • /home/victor/.linuxbrew/Cellar/zsh/5.2/bin/zsh

相关内容