Mehrere MODULEPATH-Einträge in .modulesbeginenv

Mehrere MODULEPATH-Einträge in .modulesbeginenv

Ich wechsle zwischen Pfaden/Codeprojekten. An jedem Ort habe ich unterschiedliche Module. Um dies zu handhaben, gibt es ein Setup-Skript, das ändert, was verwendet werden soll. Dies wird mit dem Tool „Modul“ gehandhabt.

NOTIZ: modulesist ein Paket zum Verwalten der Umgebung, das eine Neukonfiguration ermöglicht, sodass verschiedene Anwendungen darauf vorhanden sind $PATHoder nicht.

Das Problem besteht darin, dass bei jeder Aktualisierung eines Modulpfads ein neuer Eintrag zur Datei hinzugefügt wird~/.modulesbeginenv

#!/user/bin/env tcsh

module unuse $path1
module use $path2

module add project_module

Dieses kurze Beispiel fügt ~/.modulebeginenvbei jedem Aufruf zwei Zeilen hinzu. Zuerst MODULEPATH='paths'ohne $path1und dann MODULEPATH='paths'mit $path2.

Es erscheint mir seltsam, dass die Änderung angehängt und nicht aktualisiert wird. Gibt es eine Konfiguration, um dies zu steuern, oder eine andere Möglichkeit, das Problem zu lösen?

Antwort1

useWenn ich mir die Verwendung anschaue, klingt das Verhalten, das Sie sehen, nach dem, was ich von dem Unterbefehl erwarten würde .

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

Standardmäßig stellt dieser Unterbefehl das Verzeichnis der $MODULEPATHUmgebungsvariable voran. Wenn das Argument -aoder --appendverwendet wird, wird das Verzeichnis angehängt $MODULEPATH.

Mit dem Unterbefehl unusewerden alle von Ihnen angegebenen Pfade entfernt.

  module unuse directory [directory...]

Entfernen Sie das Verzeichnis aus der Umgebungsvariable $MODULEPATH.

Wenn Sie eine Variable vollständig überschreiben möchten, können Sie jederzeit den setenvBefehl verwenden.

  setenv variable value

Umgebungsvariable auf Wert setzen. Der setenvBefehl ändert auch die Umgebung des Prozesses. Eine Referenz mit Tcls assoziativem env-Array verweist auf Änderungen, die mit dem setenvBefehl vorgenommen wurden. Änderungen, die mit Tcls assoziativem env-Array vorgenommen werden, ändern NICHT die Umgebungsvariable des Benutzers wie der Befehl setenv. Eine auf diese Weise vorgenommene Umgebungsänderung wirkt sich nur auf den Modulanalyseprozess aus. Der setenvBefehl ist auch nützlich, um die Umgebung vor dem Befehl execoder zu ändern system. Wenn eine Moduldatei entladen wird, setenvwird unsetenv. Wenn die Umgebungsvariable definiert wurde, wird sie beim Laden der Moduldatei überschrieben. Ein nachfolgendes Entladen setzt die Umgebungsvariable zurück – der vorherige Wert kann nicht wiederhergestellt werden! (Es sei denn, Sie behandeln dies explizit ... siehe unten.)...

Verweise

verwandte Informationen