如何使 Bash 成为 Ubuntu 上的默认 shell?

Jam*_*sen 126 ssh bash ubuntu

.bash_profile我的主目录中有一个,但它没有在登录时运行。如果我执行以下操作,那么事情似乎如我所料:

ssh myhost
bash
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

但通常这一切都发生在登录时。想法?

aki*_*ira 215

用:

chsh
Run Code Online (Sandbox Code Playgroud)

输入您的密码并说明您要使用的 shell 的路径。

对于 Bash,这将是/bin/bash. 对于 Zsh,这将是/usr/bin/zsh.

  • 或者你可以使用`sudo chsh -s /bin/bash username` (57认同)
  • +1 - 不知道为什么 OP 决定编辑密码文件是更好的选择,但这是最好的答案 (17认同)
  • **您必须注销并重新登录才能看到此更改。** (16认同)

Joh*_*n T 43

除了 akira 的回答之外,您还可以编辑您的/etc/passwd文件以指定您的默认 shell。

你会发现像这个例子这样的一行:

john:x:1000:1000:john,,,:/home/john:/bin/sh
Run Code Online (Sandbox Code Playgroud)

外壳在最后指定。

  • 最好按照 akira 的建议使用 'chsh' 命令——减少错误搞砸的机会。 (8认同)
  • 更不用说当您无法写入 /etc/passwd 时可以使用“chsh” (5认同)
  • **您必须注销并重新登录才能看到此更改。** (4认同)
  • 如果您在没有用户密码的情况下运行服务器 - 仅通过公共/私人 ssh 密钥提供访问权限……这也很有意义。chsh 需要密码。 (2认同)

小智 10

启用 bash:

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

为用户更改外壳:

$ sudo usermod -s /bin/bash username
Run Code Online (Sandbox Code Playgroud)

在哪里:

  -s, --shell SHELL             new login shell for the user account
Run Code Online (Sandbox Code Playgroud)

  • (1) “启用 bash”是什么意思?(2) 用户想在远程系统上更改*他自己的*登录shell。你为什么假设他在那个系统上有 `sudo` 访问权限?为什么要提供有关更改其他用户登录 shell 的说明? (3认同)

小智 7

如果您以某种方式在 /etc/passwd 文件中看不到您的用户名 [当您的系统受到其他域(例如 IT 公司)的控制时就会出现这种情况] 或者它显示“找不到用户”,并且带有chsh以下选项的选项帮你。

以下技巧背后的逻辑 -> 在 Ubuntu 上,/bin/sh 是破折号。您可以将系统切换为使用 bash。在 Ubuntu 上,/bin/sh 是 dash 的符号链接。您可以将其设为 bash 的符号链接。要更改它,请运行

sudo dpkg-reconfigure dash

然后按切换到bash

现在,转到终端->编辑->首选项->命令并勾选带有语句的复选框

作为登录 shell 运行命令

就是这样。


Tad*_*ski 6

您可能会检查您的终端程序。它可能被配置为运行 /bin/sh 而不是 /bin/bash

Bash 仅对登录会话执行 .bash_profile。.bashrc 为所有 bash 会话执行,而不仅仅是登录会话。尝试从 .bashrc 获取 .bash_profile (避免循环依赖!)或配置您的终端程序以将 /bin/bash -l 作为 shell 程序运行。

  • 终端程序与问题无关,因为它是远程机器上的 sshd,它产生了新的 shell。 (2认同)

Beh*_*ang 6

要将任何 shell 设置为默认 shell,请首先通过查看以下内容来验证它是否已安装并在您的计算机上被识别/etc/shells

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish
Run Code Online (Sandbox Code Playgroud)

然后使用chsh来改变你的外壳:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)
Run Code Online (Sandbox Code Playgroud)

参考

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh