.modulesbeginenvの複数のMODULEPATHエントリ

.modulesbeginenvの複数のMODULEPATHエントリ

パス/コードプロジェクトを切り替えています。各場所に異なるモジュールがあります。これを処理するために使用する項目を変更する設定スクリプトがあります。これはツール「モジュール」によって処理されます。

メモ: modules環境を管理するためのパッケージで、さまざまなアプリケーションが存在または$PATH存在しないように環境を再構成できます。

問題は、モジュールパスが更新されるたびに新しいエントリがファイルに追加されることです。~/.modulesbeginenv

#!/user/bin/env tcsh

module unuse $path1
module use $path2

module add project_module

~/.modulebeginenvこの簡単な例では、各通話に 2 つの回線を追加します。最初はMODULEPATH='paths'ありませんし、$path1次にMODULEPATH='paths'はあります$path2

変更が更新ではなく追加であることが奇妙に見えます。この問題を制御できる構成やその他の回避策はありますか?

答え1

使い方を見ると、サブコマンドで期待できる動作に似ていますuse

  module use [-a |--append] directory [directory...]

$MODULEPATHデフォルトでは、このサブコマンドは環境変数にディレクトリを追加します。-aまたは、パラメータを使用すると、ディレクトリが--appendに追加されます$MODULEPATH

サブコマンドを使用すると、指定したすべてのunuseパスが削除されます。

  module unuse directory [directory...]

$MODULEPATH 環境変数からディレクトリを削除します。

変数を完全に上書きするには、いつでもこのsetenvコマンドを使用できます。

  setenv variable value

環境変数を値に設定します。このsetenvコマンドはプロセス環境も変更します。 Tclのenv連想配列を使用する参照は、setenvこのコマンドを使用して変更された内容を参照します。 Tclのenv連想配列を使用して行った変更は、setenvコマンドのようにユーザーの環境変数を変更しません。このように変更された環境は、モジュール検証プロセスにのみ影響を与えます。このコマンドは、setenvコマンドの前に環境を変更するのにも役立ちます。モジュールファイルがアンロードされると、環境変数が定義されている場合はモジュールファイルがロードされたときに上書きされます。その後のアンインストールでは、環境変数が設定解除されます。以前の値は復元できません。 (明示的に処理しない限り...以下を参照してください。)…execsystemsetenvunsetenv

引用する

関連情報