.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

인용하다

관련 정보