
パス/コード プロジェクトを切り替えています。それぞれの場所に異なるモジュールがあります。これを処理するために、使用するものを変更するセットアップ スクリプトがあります。これは、ツール「モジュール」で処理されます。
注記: 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
の前に環境を変更する場合にも役立ちます。モジュールファイルがアンロードされると、は になります。環境変数が定義されている場合は、モジュールファイルのロード中に上書きされます。その後のアンロードにより、環境変数が設定解除されます。以前の値は復元できません。(明示的に処理しない限り...以下を参照してください。)...exec
system
setenv
unsetenv