web-dev-qa-db-ja.com

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

この問題はしばらくの間私を悩ませてきました、そして私は 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

そのような組み込みの可能性はありますか、それとも蝶を追いかけていますか?

26
mhitza

exec zshを使用すると、新しいzshが生成され、init関数が再実行されます。ログインzshが「ログインシェル」ステータスを維持するには、exec zsh -lが必要になることに注意してください。コマンド履歴がどれほど適切に保存されるのかわかりません(私にとってはうまくいくようですが、異なる端末で複数のシェルを使用すると、2つのシェルの履歴間で「クロストーク」が発生する可能性があります)。

35
Random832

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

設定によっては、-lをロードするために.profilezsh/bashに追加する必要がある場合があります。また、 $HOMEを使用して環境を設定し、シェルがスタートアップファイルの場所を認識できるようにします。まとめると、次のようになります。

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