如何从未知 shell 切换到 bash?

mou*_*che 46 shell

我很惊讶我没有在网站上找到这个问题。所以,今天$是在我以新用户身份登录后出现的。这是出乎意料的,因为我的主要用户的提示以username@computername:~$.

那么,我如何从这个其他 shell 切换到 bash?

Kev*_*n M 69

假设未知 shell 支持运行绝对命令,您可以尝试: /bin/bash

要更改默认 shell,我会使用chsh(1). 示例用法:chsh -s /bin/bash $USER

  • @mouche 永久;它会更改您在 `/etc/passwd` 中的条目 (10认同)

xen*_*ide 20

你输入bash. 如果您希望这是永久性的,请/bin/bash通过编辑/etc/passwd.

这是我的一些片段/etc/passwd

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

最后一个字段包含 shell,将最后:一个字段修改为有效或无效的 shell 将起作用。/bin/false并且/sbin/nologin两者都意味着用户没有真正的登录 shell,尽管如果 pam 设置不正确,这并不意味着他们无法登录(我在 Arch Linux 中报告了一个关于此的错误,因为您可以在没有登录的情况下以图形方式登录登录外壳)。/bin/bash并且/bin/zsh都是有效的 shell,请参阅/etc/shells了解您系统上的有效 shell 列表。/etc/shells如果你有兴趣,这是我的。

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash
Run Code Online (Sandbox Code Playgroud)

是的,您可以使用chshusermod做同样的事情,请记住这些只是结构化文本文件和 TIMTOWTDI。

  • 你可能想使用 `chsh` 而不是手动编辑 `passwd` (11认同)

Kev*_*ntu 13

如果chsh或手动编辑配置不起作用,但在登录时执行 ~/.profile 脚本,请添加以下行:

exec /bin/bash --login
Run Code Online (Sandbox Code Playgroud)

  • `touch ~/.bash_profile` 否则 bash 将循环执行自身:如果 `~/.bash_profile` 不存在,bash 会使用 `~/.profile`。 (3认同)