この問題はしばらくの間私を悩ませてきました、そして私は EnvWatcher を通して私の答えを見つけたと思っていましたが、残念ながらそれはBashでのみ機能します。そして、私はzshを使用します。
私はenv-watcherが行うことをあまり再現しないようにしたいと思いますが、シェルをクリーンスタートアップステージにリセットできるコマンドがあるかどうかを知る必要があります。
たとえば、次のワークフローが欲しいです。
source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more
そのような組み込みの可能性はありますか、それとも蝶を追いかけていますか?
exec zsh
を使用すると、新しいzshが生成され、init関数が再実行されます。ログインzshが「ログインシェル」ステータスを維持するには、exec zsh -l
が必要になることに注意してください。コマンド履歴がどれほど適切に保存されるのかわかりません(私にとってはうまくいくようですが、異なる端末で複数のシェルを使用すると、2つのシェルの履歴間で「クロストーク」が発生する可能性があります)。
エクスポートされた環境変数を元に戻すには、env
コマンドenv -i zsh
を使用できます。 env
は引数として指定されたコマンドを実行し、-i
はクリーンな環境を提供します。
設定によっては、-l
をロードするために.profile
をzsh
/bash
に追加する必要がある場合があります。また、 $HOME
を使用して環境を設定し、シェルがスタートアップファイルの場所を認識できるようにします。まとめると、次のようになります。
env -i HOME="$HOME" zsh -l