Answers:
请注意,仅允许您更改为中列出的shell /etc/shells
。通常这很好,但这意味着,如果要安装Bash 4(通过Homebrew,MacPorts或自己编译),则需要在上添加一行/etc/shells
。(几周前我遇到了这个问题,并认为这可能会帮助其他人知道...)
编辑:蒂姆·史密斯(Tim Smith)指出,/etc/shells
如果您chsh
通过root以root身份运行,则可以绕开限制sudo
。sudo chsh -s /usr/local/bin/my_shell $USER
即使my_shell
未在中列出,Eg 也能正常工作/etc/shells
。我更喜欢编辑/etc/shells
,但是最后,这是sudo
两种方式的一种用法,因为您不能/etc/shells
以普通用户的身份进行编辑。因此,可能是六个,另一个是六个。
/etc/shells
如果不需要,为什么要更改?为了保持理智,我宁愿将系统文件保持不变。
/etc/shells
是系统上定义可识别外壳程序的文件。我更改该文件是因为我想将外壳添加到已识别外壳的列表中。对我来说似乎很合理。
chsh: bash: non-standard shell
chsh
,如果你正在尝试使用未在上市壳孤独/etc/shells
。
/etc/shells
对我来说似乎并不奇怪。
使用上面的答案,我收到一条错误消息:
$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell
要变通解决此问题:
sudo chsh -s zsh $(whoami)
whoami
子外壳程序中的内容是为您的用户而不是根用户更改外壳程序。
如果您正在使用自制软件,则还有另外一件事。当您以root身份运行命令(使用sudo
)时,zsh指向/ bin / zsh,它是OSX随附的,可能已过时。要使用通过自制程序安装的最新版本,请使用以下命令:
sudo chsh -s $(which zsh) $(whoami)