终端的默认外壳是什么?

DrS*_*ove 65 command-line

比方说,我打开了一个终端并输入/执行了一些 shell 命令。

但是我没有显式调用 Bash 或任何其他 shell。

默认使用什么shell?

Cae*_*ium 62

在您的行中指定的那个/etc/passwd(它是一个:单独的行,shell 是最后一个)。

例如我的:

chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
Run Code Online (Sandbox Code Playgroud)

在这里/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]:
Run Code Online (Sandbox Code Playgroud)

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

最后,echo $SHELL将做同样的事情:

$ echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)

  • @DrStrangeLove:如果管道中有多个命令需要 root 权限,那么 `sudo bash -c "..."` 将确保整个管道由 root 执行。 (2认同)
  • 如果您使用`chsh`,则**您必须注销并重新登录** 才能看到此更改。 (2认同)

fos*_*dom 22

键入以下内容将显示终端打开的外壳:

echo $SHELL
Run Code Online (Sandbox Code Playgroud)

但是,要找出您当前所在的外壳程序(您可能已更改它),请键入

ps -p $$
Run Code Online (Sandbox Code Playgroud)

例如,您将在示例输出中看到 shell 是bash

  PID TTY          TIME CMD
 3500 pts/0    00:00:01 bash
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用

echo $0
Run Code Online (Sandbox Code Playgroud)

这将简单地返回当前 shell 的名称。


Ano*_*ous 19

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

这是在 $SHELL 环境变量中定义的。您可以通过echo $SHELL在终端中键入来检查。


woj*_*jox 5

默认情况下它是 bash:

env | grep ^SHELL=
Run Code Online (Sandbox Code Playgroud)

大多数情况下会产生

SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)