Macにzshをインストールしました。そして今、私はそれをBashの代わりにデフォルトのシェルにしたいです。しかし、私は次のエラーに遭遇しているようです:
$ echo $Shell
/bin/bash
$ chsh -s /usr/bin/zsh
Changing Shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard Shell
which zsh
thisは、zshへのパスを提供しますchsh -s /bin/zsh
または異なる場合は、zshへのパスを置き換えます正しい答えはあなたの問題に対処したはずです:
chsh:/ usr/bin/zsh:非標準シェル
この理由は、chsh
のマニュアルを読むとわかるように、chsh
がファイル/ etc/shellsで定義されているシェルのみを受け入れるためです。
chshは、システム上のすべての実行可能ファイルの絶対パス名を受け入れます。ただし、シェルが/ etc/shellsファイルにリストされていない場合、警告が発行されます。
この問題を解決し、zshをデフォルトのシェルにするには、次のようにする必要があります。
$ Sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
明らかに、zsh
がここのパスにあると仮定します。このソリューションは、たとえば、最新のzsh
とbrew install zsh
をインストールすることを選択した場合にも機能します。
EDIT(コメントのThisIsFlorianKに感謝):
シェルの設定によっては、/etc/shells: Permission denied
というメッセージが表示される場合があります。この問題に関する情報を見つけることができます here。 この問題を回避するには、代わりに次を使用します。
$ Sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
次の操作を行うことで、これを機能させることができました。
echo $Shell
で確認します私の仕事のMacBookでは、これをしなければなりませんでした:
Sudo chsh -s /usr/local/bin/zsh my_user_name
その後、.bash_profile
ファイルを作成して、ターミナルを開くたびに端末をz-Shellに切り替える必要がありました。
touch ~/.bash_profile
echo 'export Shell=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile
最後のアイデアは借りられました ここから 。