Answers:
您需要将此shell添加到/etc/shells
。该手册内容如下:
/etc/shells
是一个文本文件,其中包含有效登录shell的完整路径名。该文件chsh(1)
由其他程序查询并可供查询。请注意,有些程序会查询此文件以确定用户是否是普通用户; 例如,FTP守护进程传统上不允许使用未包含在此文件中的shell访问用户。
在我的Kubuntu中,这是以下内容/etc/shells
:
# /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux /bin/zsh /usr/bin/zsh /usr/bin/fish /bin/tcsh /usr/bin/tcsh
正如您所看到的,它的格式非常明显。就我而言fish
,就像那样/usr/bin/fish
。确保您的案例中的正确路径/bin/fish
并将其添加到您的文件中。
请注意,最好使用chsh
更改登录shell,而不是/etc/passwd
手动编辑。如果你这样做了
chsh -s /bin/fish
你可能会得到
chsh: /bin/fish is an invalid shell
调查这个问题(有man 1 chsh
)可能会揭示/etc/shells
你的存在。
该工具旨在由无特权的用户运行。如果/etc/shells
(由root管理)的内容是健全的,那么用户通常无法将自己锁定。通过编辑/etc/passwd
你不仅可以像你一样锁定自己; 你可能(错误地)打破更多。
chsh
),它会/应该警告您有关该问题的信息。