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


25

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

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

回答:


32

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


4
それはエクスポートされた環境変数を元に戻さないでしょうか?(ただし、initファイルによって設定されるものはリセットされます。)
cjm

おそらくそうではないでしょう。環境変数をシェルで一時的に設定するものとして考えていなかったので、私はその側面を考慮していませんでした。
Random832

15

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

構成に応じて、をロードするため-lzsh /  bashに追加する.profile必要があり$HOMEます。また、起動ファイルの場所をシェルが認識できるように、環境を「ブートストラップ」する必要があります。全体として、これは次のようになります。

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

1
TERMやなど、他にもいくつか必要になる場合がありDISPLAYます。
G-Manが「Reinstate Monica」と言う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.