web-dev-qa-db-ja.com

端末アプリケーション(mac)を再起動せずに端末からbashを再起動しますか?

私は周りを見回して、この質問に対する答えを探しましたが、それを見つけることができないようです(これは奇妙です)。

私の質問は、Macのターミナル内からbashセッションを再起動する簡単な方法はありますか。ターミナルアプリケーションを閉じて再起動した場合と同じ動作が必要なだけです(すべての変数がリセットされ、.bash_profileがソースになるなど)。

私は.bash_profileを入手する方法を知っていますが、それは私が望んでいることではありません。これを実行したい理由の1つは、bashプロンプトのプラグインに、色が複数回読み込まれないようにするコードが含まれているためです。したがって、.bash_profileを調達してもカラー変数は再ロードされず、変更を有効にするには端末アプリケーションを再起動する必要があります。

49
Mattias

exec bashは、現在のシェルプロセスをbash(の新しいインスタンス)に置き換えます。

73
Muzer

受け入れられた答えは、bashを使用しているシェルに最適です。これは、OPが要求したものでもありますが、macOSのターミナルをデフォルト以外のシェル(zsh)で使用しており、コマンドexec bashを実行すると明らかにわかりません。 t希望する効果が得られます。デフォルトのシェルの代わりにbashが起動します。

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

また、AppleはmacOS Catalinaでbashをzshに置き換えるため、OPがexec zshまたはexec $Shellのいずれかを実行するために探している効果をもたらすことに注意してください。 macOS 10.15へのアップデート後に移動します。

4
phip