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
に問題がありますか?
あなたはそれを間違っています。ユーザーのシェルを変更するには、chsh
コマンドを使用する必要があります。
$ chsh -s /usr/local/bin/fish
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 ...
が機能するようになります。