Несколько записей MODULEPATH в .modulesbeginenv

Несколько записей MODULEPATH в .modulesbeginenv

Я переключаюсь между проектами путей/кода. В каждом месте у меня разные модули. Для этого есть скрипт настройки, который изменяет, что использовать. Это делается с помощью инструмента 'module'.

ПРИМЕЧАНИЕ: modules— это пакет для управления средой, позволяющий перенастраивать ее таким образом, чтобы на ней присутствовали $PATHили не присутствовали различные приложения.

Проблема в том, что каждый раз при обновлении пути к модулю в файл добавляется новая запись.~/.modulesbeginenv

#!/user/bin/env tcsh

module unuse $path1
module use $path2

module add project_module

Этот короткий пример добавляет две строки ~/.modulebeginenvпри каждом вызове. Сначала 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Команда также изменит окружение процесса. Ссылка с использованием ассоциативного массива env Tcl будет ссылаться на изменения, внесенные с помощью setenvкоманды. Изменения, внесенные с использованием ассоциативного массива env Tcl, НЕ изменят переменную окружения пользователя, как команда setenv. Изменение окружения, внесенное таким образом, повлияет только на процесс разбора модуля. Команда setenvтакже полезна для изменения окружения до команды execили system. Когда modulefile выгружается, setenvстановится unsetenv. Если переменная окружения была определена, она будет перезаписана при загрузке modulefile. Последующая выгрузка сбросит переменную окружения - предыдущее значение не может быть восстановлено! (Если вы не обработаете это явно ... см. ниже.)...

Рекомендации

Связанный контент