シェル環境をリセットする方法は?

シェル環境をリセットする方法は?

この質問はしばらく私を悩ませましたが、答えを見つけたようです。環境観察者、残念ながらBashでのみ動作します。私はzshを使います。

env-watcherが何をするのかを複製したいのですが、シェルをクリーンブートフェーズにリセットするコマンドがあるかどうかを知る必要があります。

たとえば、次のようなワークフローが必要です。

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

そんな本質的な可能性があるのか​​、それとも私は蝶を追っているのか?

答え1

直接移動すると、exec zsh新しいzshが提供され、init機能が再び実行されます。exec zsh -l「ログインシェル」状態を維持するには、zshにログインする必要があります。コマンド履歴をどれだけうまく保存しているかわかりません。 (私には効果があるようですが、異なる端末で複数のシェルを使用している場合は、2つのシェル履歴の間に「クロストーク」が発生する可能性があります。)

答え2

エクスポートした環境変数を元に戻すには、envコマンドを使用しますenv -i zsh。  env引数として指定された命令を実行して、-iきれいな環境を提供します。

設定によっては/を  -l追加してロードする必要があり、シェルが起動ファイルを見つけることができる場所を知るために環境を「ブートストラップ」する必要があります。全体的に見ると、次のようになります。zshbash.profile$HOME

env -i HOME="$HOME" zsh -l

関連情報