この質問に対する回答を探してみましたが、見つからないようです(異常ですね)。
私の質問は、Mac端末内でBASHセッションを再開する簡単な方法があるかどうかです。ターミナルアプリケーションを閉じて再起動するのと同じ動作が必要です(すべての変数のリセット、.bash_profile
ソースなど)。
私はリソースを取得する方法を知っていますが、.bash_profile
それは私が望むものではありません。私がこれをやろうとしている理由の1つは、BASHプロンプトのプラグインに色が何度もロードされるのを防ぐコードがあることです。したがって、ソーシングは.bash_profile
カラー変数を再ロードせず、変更を適用するにはターミナルアプリケーションを再起動する必要があります。
答え1
exec bash
現在のシェルプロセスは(新しいインスタンス)bashで置き換える必要があります。
編集:以下の回答では、Catalinaがbashをzshに置き換えたように見えます。この場合、デフォルトのシェルを実行できるか、常に使用する必要がありますexec zsh
。exec "$SHELL"
答え2
長すぎます。にあるのと同じシェルを起動するために使用しますexec $SHELL
。許可された回答は、bashを使用している場合にのみ適用されます。
-
許可された答えは、OPが要求したbashを使用するシェルに適していますが、macOSではデフォルト以外のシェル(zsh)を持つ端末を使用していますexec bash
。効果:デフォルトシェルの代わりにbashを起動します。
exec $SHELL
したがって、環境に依存しないコマンドは、ユーザーのデフォルトシェルを格納する環境変数を使用します。$SHELL
また、AppleはOPが実行したい効果を得るために、exec zsh
またはexec $SHELL
macOS 10.15にアップデートした後、macOS Catalinaでbashをzshに置き換えました。
答え3
~によるとこの記事Catalinaにアップグレードしてもシェルは変更されません。しかし、新しいアカウントはzsh
。bash
に変更できます。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'