なぜ/etc/shellsに魚を追加できないのですか?

なぜ/etc/shellsに魚を追加できないのですか?

OSXでは、Fishシェルをデフォルトのシェルとして使用しようとしています。 Brewを使用してフィッシュシェルをインストールしましたが、それを追加しようとすると/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ユーザーのシェルを変更するには、このコマンドを使用する必要があります。

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

OSX

/etc/shellsOSXでは、明らかにこの質問で述べたようにファイルに追加する必要があります。OS XはFishをデフォルトのシェルに設定することを拒否します(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/shellsfish/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 ...機能します。

引用する

おすすめ記事