我正在尝试使用 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 ...
现在应该可以工作了。