CentOS 7.x에서 사용자가 소프트웨어 실행기를 "로드"하는 올바른 방법은 명령줄에서 실행하는 것입니다.
module load program/1.1
Bash 스크립트를 통해 이 명령을 실행하는 올바른 방법은 무엇입니까(예: 컴퓨팅 클러스터에 작업 제출 등)? 한 사람이 할 수 있어요
source module load program/1.1
다른 어떤 옵션이 있나요?
답변1
쉘 스크립트는 마치 명령줄에 입력한 것처럼 실행될 명령 목록일 뿐입니다. 따라서 올바른 접근 방식은 다음과 같습니다.
module load program/1.1
...명령줄에서 실행하는 것과 같습니다. 명령을 찾을 수 없으면 소스 $MODULESHOME/init/<shell>
(set module
명령)를 가져와야 할 수도 있습니다.
이 module
명령은 실제로 현재 쉘 환경을 조작할 수 있는 쉘 기능입니다.
source
뭔가 다른 일을 합니다. 기본적으로 소스 스크립트를 복사하여 스크립트에 붙여넣습니다. 따라서 소스 스크립트에서 함수를 정의하면 해당 함수를 호출할 수 있습니다. 변수를 설정하면 내보내지 않아도 볼 수 있습니다.
이제 대화형 셸에서 사용할 여러 모듈을 로드하는 스크립트를 작성하려면 다음을 수행하세요.대화형 셸에서소스가 필요해당신의 스크립트, 하지만 module
. 이것모듈 FAQ이것을 설명합니다.
답변2
나는 비슷한 문제에 직면했고 마침내 올바른 shebang 및 호출 기능이 필요하다는 것을 깨달았습니다. 따라서 미래의 사용자를 위해 다음 세 단계를 따르세요.
1) #!/bin/bash
Shebang 으로 사용
2) module load program/1.1
스크립트에 추가
./yourscript.sh
3) 또는를 사용하여 스크립트를 실행 하지만 작동하지 않으므로 실행 bash yourscript.sh
하지 마십시오.sh yourscript.sh