web-dev-qa-db-ja.com

MacOSXでZSHをデフォルトシェルにする

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
77
Harsha M V

3つの簡単なステップ:

  1. which zshthisは、zshへのパスを提供します
  2. 次に、chsh -s /bin/zshまたは異なる場合は、zshへのパスを置き換えます
  3. マシンを再起動します
73
Quentin Perez

正しい答えはあなたの問題に対処したはずです:

chsh:/ usr/bin/zsh:非標準シェル

この理由は、chshのマニュアルを読むとわかるように、chshがファイル/ etc/shellsで定義されているシェルのみを受け入れるためです。

chshは、システム上のすべての実行可能ファイルの絶対パス名を受け入れます。ただし、シェルが/ etc/shellsファイルにリストされていない場合、警告が発行されます。

この問題を解決し、zshをデフォルトのシェルにするには、次のようにする必要があります。

$ Sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

明らかに、zshがここのパスにあると仮定します。このソリューションは、たとえば、最新のzshbrew install zshをインストールすることを選択した場合にも機能します。

EDIT(コメントのThisIsFlorianKに感謝)

シェルの設定によっては、/etc/shells: Permission deniedというメッセージが表示される場合があります。この問題に関する情報を見つけることができます here。 この問題を回避するには、代わりに次を使用します。

$ Sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
156
dangom

次の操作を行うことで、これを機能させることができました。

  1. システム環境設定に移動します
  2. 「ユーザーとグループ」をクリックします
  3. 変更するにはロックをクリックします。
  4. 現在のユーザーを右クリック->詳細オプション
  5. ドロップダウンでログインシェルを/ bin/zshに変更します。
  6. 新しいターミナルを開き、echo $Shellで確認します
43
Nate Jenson

私の仕事の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

最後のアイデアは借りられました ここから

5
sakovias