경로/코드 프로젝트 간에 전환하고 있습니다. 각 장소마다 다른 모듈이 있습니다. 이를 처리하기 위해 사용할 항목을 수정하는 설정 스크립트가 있습니다. 이는 도구 "모듈"을 통해 처리됩니다.
노트: 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
또는 명령 이전에 환경을 변경하는 데에도 유용합니다. 모듈 파일이 언로드되면 환경 변수가 정의된 경우 모듈 파일이 로드될 때 덮어쓰게 됩니다. 이후 제거에서는 환경 변수가 설정 해제됩니다. 이전 값은 복원할 수 없습니다. (명시적으로 처리하지 않는 한...아래를 참조하세요.)…exec
system
setenv
unsetenv