Bash 및 기타 쉘에서는 명령 앞에 동일한 변수를 정의하여 "라인 범위" 명령을 만들 수 있습니다.
CXX=clang++ ./script.bash
나는 어느 쪽이 더 마음에 드나요?
export CXX=clang++
./script.bash
전자는 환경을 오염시키지 않기 때문입니다.
설정된 변수를 사용하여 동일한 작업을 수행 source
하고 동일한 "행 범위" 효과를 얻으려면 어떻게 해야 합니까?
다음과 동일:
source env.source # defines a bunch of vars
./script.bash
??? ./script.bash
답변1
서브쉘을 사용하세요:
( source env.source && ./script.bash )
서브쉘이 종료되면 서브쉘 내의 환경이 파괴됩니다.
또는 다음 에서 스크립트를 bash
설정하십시오 BASH_ENV
.
BASH_ENV=./env.source ./script.bash
이 BASH_ENV
변수는 비대화형 쉘(예: 스크립트)에 적용됩니다. 이 변수가 도트 스크립트의 경로 이름으로 설정되면 메인 스크립트 본문이 실행되기 전에 도트 스크립트를 얻습니다. 를 $PATH
사용할 때는 또는 를 사용할 때와 달리 도트 스크립트를 검색하지 않으므로 BASH_ENV
전체 경로(상대 또는 절대)를 제공해야 합니다..
source
("dot-script" == (점) 유틸리티에서 파생된 스크립트 ( .
라고도 함 source
)bash