特定のファイルを取得するために新しいzshインスタンスを起動する方法は?

特定のファイルを取得するために新しいzshインスタンスを起動する方法は?

/venv/bin/activateいくつかの環境変数を設定するスクリプトがあります。 zshを起動してこのスクリプトをインポートしてから、一般的な対話型セッションを続行する方法を探しています。このセッションを終了すると、戻ってくるセッションは環境の変更を認識できませんactivate。どのようにzshをこのように呼び出すことができますか?

(これは次のとおりです。これただし、bashの代わりにzshを使用するという点を除いてください。 )

ベストアンサー1

スクリプトが環境変数のみを設定している場合は、activateシェルからその変数を読み取り、新しい対話型zshインスタンスを実行できます。

sh -c '. /venv/bin/activate; exec zsh -i'

ラッパーシェルは、スクリプトが互換性があるかどうかなど、sh解析可能な任意のシェルに置き換えることができます。/venv/bin/activatezshactivate

環境変数に加えて、インタラクティブzshインスタンスは、プロセスIDとリソース制限(ulimit …)とシグナルの無視(trap '' …)などの他のいくつかのプロセス設定を継承します。一方、シェル変数(エクスポートされていないvar=…場合var)、シェルオプション(set -…またはshopt …)、キーバインディング、エイリアス、関数定義など、シェル自体の設定は保持されません。

.zshrc明らかに、これはスクリプトによって設定された環境変数を無視しても機能しませんactivate。これが理由の一つです.*shrcファイルは環境変数を設定しないでください。

おすすめ記事