web-dev-qa-db-ja.com

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

OSXのデフォルトのシェルとしてfish 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に問題がありますか?

5

あなたはそれを間違っています。ユーザーのシェルを変更するには、chshコマンドを使用する必要があります。

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

OSX

OSXでは、これを/etc/shellsファイルに追加する必要があるようです。このタイトルの問題で説明されているように、 OS Xはデフォルトのシェルとしての魚の設定を拒否しています(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 ...が機能するようになります。

参考文献

8
slm