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