为什么我无法将鱼添加到 /etc/shells 中?

为什么我无法将鱼添加到 /etc/shells 中?

我正在尝试使用 Fish shell 作为 OSX 上的默认 shell。我已经使用brew安装了fish shell,当我想将其添加到时/etc/shells出现以下错误:

tee: /etc/shells: No such file or directory

这是我使用的命令行:

echo "usr/local/bin/fish" | sudo tee -a /etc/shells

来源:https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/

我的有什么问题吗$PATH

答案1

你这样做是错的。您应该使用该chsh命令来更改用户的 shell。

$ chsh -s /usr/local/bin/fish

操作系统X

在 OSX 上,您显然必须将其添加到文件中/etc/shells,如本问题中所述:OS X 拒绝将 Fish 设置为默认 shell(通过 Homebrew 安装)#989

为此,您需要运行此命令将其添加到/etc/shells

$ echo "/usr/local/bin/fish" | sudo tee -a /etc/shells

之后该文件将如下所示:

$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
/usr/local/bin/fish

完成上述操作后,chsh -s ...再次尝试该命令,它应该可以工作。

为什么?

这个问题似乎与fish安装方式有关。如果您使用,brew install fish那么很可能fish已正确添加到/etc/shells.如果您fish通过其他方式安装,则它可能不会作为条目添加到文件中/etc/shells

次要问题

在某些情况下,权限/etc本身可能是问题。

$ ll /etc
lrwxr-xr-x@ 1 root  wheel    11B Jan 26  2016 /etc -> private/etc

$ ll -d private/etc/
drwxr-xr-x  96 root  wheel   3.2K Jul 12 18:53 private/etc/

这些权限是可以接受的,如果不可以,您可以像这样修改它们:

$ sudo mount -uw / 
$ sudo chmod a+x private/etc

经过上述更改,chsh -s ...现在应该可以工作了。

参考

相关内容