尝试更改默认 shell 时,/etc/passwd 中不存在该用户

尝试更改默认 shell 时,/etc/passwd 中不存在该用户

我想将我的默认 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

  1. 编辑个人资料偏好头衔和命令
  2. 查看运行自定义命令而不是我的 shell
  3. 提供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。

相关内容