zshからbashに切り替えることができません

zshからbashに切り替えることができません

新しいMacではbashに切り替えてみてください。

alex.mills@alex uta-phd %
alex.mills@alex uta-phd % echo $SHELL
/bin/zsh
alex.mills@alex uta-phd %
alex.mills@alex uta-phd % exec bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`. 
For more details, please visit https://support.apple.com/kb/HT208050.
%na%m %1~ %#
%na%m %1~ %# echo $SHELL
/bin/zsh
%n@%m %1~ %#

echo "$SHELL"引き続き使用中だと思います/bin/zsh

何をすべきか?

答え1

あなたはいバッシュを実行してください。だから、プロンプトが奇妙に見えるのです。 Bashとzshは両方ともPS1変数をプロンプトのデフォルト設定として使用しますが、エスケープシーケンスは異なります(bashのバックスラッシュ文字、zshのパーセント記号文字、2番目の文字は異なる意味を持ちます)。

PS1通常、この変数は環境にエクスポートするのではなく(または)シェルの初期化ファイルによって設定する必要がありますが(主なLinuxディストリビューションを含む)、多くのシステムでは非常に簡単に構成およびエクスポートできます。私が知っている限り、MacOSはデフォルトで正しくエクスポートされませんが、ユーザーのファイルはエクスポートできるように見えます(または私が確認したものとは異なるバージョンのmacOSかもしれません)、何らかの理由でそうではありません。特にmacOSでは、すでに設定されている場合は変更してください。.bashrc.zshrcPS1PS1bashrcPS1

環境SHELL変数は実行中のシェルを表しません。どんな殻を見せるか考えるランニング。これは、実行するシェルを起動したいプログラムに通知します。他のシェルを手動で実行しても何も変わりません$SHELL

シェルプロンプトが表示され、どのシェルが実行されているかわからない場合は、を使用して確認できますps。すべてのBourneスタイルのシェル(sh、ash、bash、ksh、zshなど)は$$シェルのプロセスIDを表し、ps $$現在のシェルがどのプログラムであるかを示します。 Fishでは、Fishが$$無効なため、Fishを実行していることを示すエラーが発生します。

答え2

なぜそんなに頑張るのですかexec bashbashシェルを起動するには、単にを実行しますbash。ログインシェルとして機能するシェルの場合はを使用しますbash -l。シェルを永久bashchsh

答え3

後でケースを変更しましたか?そうでない場合は、chsh -s $(which bash)sumを呼び出しますecho $SHELL

関連情報