ターミナルアプリケーション(mac)を再起動せずにターミナルでbashを再起動しますか?

ターミナルアプリケーション(mac)を再起動せずにターミナルでbashを再起動しますか?

この質問に対する回答を探してみましたが、見つからないようです(異常ですね)。

私の質問は、Mac端末内でBASHセッションを再開する簡単な方法があるかどうかです。ターミナルアプリケーションを閉じて再起動するのと同じ動作が必要です(すべての変数のリセット、.bash_profileソースなど)。

私はリソースを取得する方法を知っていますが、.bash_profileそれは私が望むものではありません。私がこれをやろうとしている理由の1つは、BASHプロンプトのプラグインに色が何度もロードされるのを防ぐコードがあることです。したがって、ソーシングは.bash_profileカラー変数を再ロードせず、変更を適用するにはターミナルアプリケーションを再起動する必要があります。

答え1

exec bash現在のシェルプロセスは(新しいインスタンス)bashで置き換える必要があります。

編集:以下の回答では、Catalinaがbashをzshに置き換えたように見えます。この場合、デフォルトのシェルを実行できるか、常に使用する必要がありますexec zshexec "$SHELL"

答え2

長すぎます。にあるのと同じシェルを起動するために使用しますexec $SHELL。許可された回答は、bashを使用している場合にのみ適用されます。

-

許可された答えは、OPが要求したbashを使用するシェルに適していますが、macOSではデフォルト以外のシェル(zsh)を持つ端末を使用していますexec bash。効果:デフォルトシェルの代わりにbashを起動します。

exec $SHELLしたがって、環境に依存しないコマンドは、ユーザーのデフォルトシェルを格納する環境変数を使用します。$SHELL

また、AppleはOPが実行したい効果を得るために、exec zshまたはexec $SHELLmacOS 10.15にアップデートした後、macOS Catalinaでbashをzshに置き換えました。

答え3

~によるとこの記事Catalinaにアップグレードしてもシェルは変更されません。しかし、新しいアカウントはzshbashに変更できます。bash今後、ある時点ではmacOSの一部にはなりません。明らかに、ライセンスはzsh制限が少ない。

OPがexec zsh

答え4

これは私にとって効果的です。

exec env -i HOME=$HOME bash -l
  • exec現在のシェルの交換
  • env -i HOME=$HOME既存の環境変数をすべてリセットし、新しいシェルのHOMEを古い$ HOMEに設定します。
  • bash -l新しいログインシェルを起動します(zshにも同様のコマンドがある可能性があります)

エイリアスとして追加しましたが、うまくいきます。

alias reload='echo "Reloading shell...";exec env -i HOME=$HOME bash -l'

関連情報