我想将我的默认 shell 从 tcsh 更改为 bash。所以我尝试了一下,结果如下:
>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd
确实,我不在/etc/passwd中。我不知道为什么。
我能做些什么?
答案1
我的计算机是使用分布式身份验证的网络的一部分,因此我的用户详细信息不会出现在本地 /etc/passwd 文件中(但可以使用 getent passwd userid 查看)(感谢 @steeldriver)。就我而言,我必须在核心机器上执行 chsh。
答案2
有一个解决方法gnome-terminal
:
- 去编辑→个人资料偏好→头衔和命令。
- 查看运行自定义命令而不是我的 shell。
- 提供
bash
自定义命令(或fish
, 或任何其他)。
答案3
如果您尝试使用域用户通过 ssh 进入远程主机,则可能无法使用chsh
@Masoud 提到的方法更改 shell。但这里有一个简单的解决方法 - 每当您通过 ssh 进入机器时,请执行以下操作:
ssh my-host -t "zsh --login"
或者
ssh my-host -t "cd /data/repos; zsh --login"
如果您还想直接登录到不同的工作目录。
编辑:
另一个不需要 ssh 命令操作的简单选项:
- 编辑您的个人资料:
vi ~/.profile
- 通过在最后一行调用它来启动你最喜欢的应用程序,例如
zsh
- 保存并退出 (
:wq
)
这个解决方案还有一个优点,就是在创建新的子 shell 时它会持续存在,例如在使用 时tmux
。
答案4
如果你想改变用户的 shell,你不需要成为 root。只需输入:
chsh
无须sudo
争论。
也可以看看man chsh
:
chsh 命令更改用户登录 shell。这决定了名称 用户初始登录命令。普通用户只能更改 使用自己的账户登录 shell;超级用户可以更改登录 任何帐户的 shell。