.modulesbeginenv의 여러 MODULEPATH 항목

.modulesbeginenv의 여러 MODULEPATH 항목

경로/코드 프로젝트 간에 전환하고 있습니다. 각 장소마다 다른 모듈이 있습니다. 이를 처리하기 위해 사용할 항목을 수정하는 설정 스크립트가 있습니다. 이는 '모듈' 도구로 처리됩니다.

메모: 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명령은 프로세스의 환경도 변경합니다. Tcl의 env 연관 배열을 사용하는 참조는 명령으로 변경된 내용을 참조합니다 setenv. Tcl의 env 연관 배열을 사용하여 변경한 내용은 setenv 명령과 같은 사용자 환경 변수를 변경하지 않습니다. 이러한 방식으로 환경을 변경하면 모듈 구문 분석 프로세스에만 영향을 미칩니다. 이 명령은 또는 명령 setenv이전에 환경을 변경하는 데에도 유용합니다 . 모듈 파일이 언로드되면 가 됩니다 . 환경 변수가 정의된 경우 모듈 파일을 로드하는 동안 덮어쓰게 됩니다. 후속 언로드에서는 환경 변수가 설정 해제됩니다. 이전 값은 복원할 수 없습니다. (명시적으로 처리하지 않는 한... 아래를 참조하세요.)....execsystemsetenvunsetenv

참고자료

관련 정보