MacOSXでZSHをデフォルトのシェルにする[終了]


98

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

1
chsh -l出力は何ですか?(それが機能しない場合、内容は/etc/shells何ですか?)これは単に警告ではなく、失敗していると確信していますか?/usr/bin/zshそこに追加することでこれはうまくいきますか?
Etan Reisner、2015年

1
chsh:オプションには引数が必要です-l使用法:chpass [-l location] [-u authname] [-s shell] [user]
Harsha MV

/ bin / bash / bin / csh / bin / ksh / bin / sh / bin / tcsh / bin / zsh
Harsha MV

何が問題になってい/bin/zshますか?
jxh

1
現在、デフォルトのシェルをzshに変更する公式の方法があります。Appleのドキュメント「Macのデフォルトシェルとしてzshを使用する」を参照してください
。support.apple.com/ en

回答:


85

3つの簡単なステップ:

  1. which zshこれはあなたにあなたのzshへの道を与えます
  2. 次にchsh -s /bin/zsh、異なる場合はzshへのパスを置き換えます
  3. マシンを再起動します

うまくいきました。ヨセミテ固有ですか?
Harsha MV

2
いいえ、私は思いません、それはあなたの情報のためだけでした:)
Quentin Perez

8
問題を解決するために追加するように言う同じ古い質問に対する別の関連するコメント/usr/bin/zsh/etc/shells
Brice、2016年

それは完璧に機能します
オルクンムスタファ

1
それに応じて/ etc / shellsに設定してください!'$ nano / etc / shells'でzshパスを探します。鉱山は10.12.2の/ usr / bin / zshではなく/ bin / zshにありました
oikonomopo

187

正解はあなたの問題に対処しているはずです:

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

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

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

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

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

明らかに、私はそれzshがここであなたの道にあると思います。このソリューションは、たとえばで最新のものをインストールすることを選択した場合にも機能zshbrew install zshます。

編集(コメントのThisIsFlorianKに感謝)

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

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

4
これは、私の意見で受け入れられている回答よりも正確です。zshが/ usr / bin / zshにインストールされていると仮定すると、他の回答は機能しません。デフォルトでは、Appleは/ bin / zshにzshをインストールするため、これらはOPで機能しました。あなたは(下は/ usr / local / bin / zshのインストールされている)自作のzshのを使用したい場合は、これはそれを行うための適切な方法だろう
verboze

「bash:/ etc / shells:Permission denied」があります。システム環境設定を介した答えは私のために働いた。
Ricardo

44
あなたが取得する場合/etc/shells: Permission denied:==>ドゥ代わりにその sudo sh -c "echo $(which zsh) >> /etc/shells"
ThisIsFlorianK

1
stackoverflow.com/a/44547726/99834-システムファイルをいじることなく動作しました。欠けているのは、同じ操作を実行するためのCLIバージョンのみです。
ソリン

@sorinこれは不当な破壊行為への反対票なのか、それとも実際に答えに何か問題があるのですか?システムファイルは、理由により編集可能なテキストファイルです。chsh理由により、デフォルトで使用できます。大量のメニューをクリックして同じことを実行しても本質的に問題はありませんが、これは移植性がなく、エラーが発生しやすいだけでなく、変更元のユーザーから見えなくなるという誤解も生じます。
dangom

52

私は次のようにしてこれを機能させることができました:

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

4
homebrew経由でzshをインストールすると、zshがに配置され/usr/local/bin/zshます。したがって、hombrewがインストールしたzsh実行可能ファイルを選択する前に/etc/shells、sudoで編集してエントリを追加する/usr/local/bin/zsh必要があります
Baldy

7

私の仕事のMacBookでは、これを行わなければなりませんでした。

sudo chsh -s /usr/local/bin/zsh my_user_name

次に、.bash_profileファイルを作成して、ターミナルを開くたびにzシェルに切り替える必要がありました。

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.