.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

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

参考文献

関連情報