단일 라인 범위 소스를 사용하여 변수 로드

단일 라인 범위 소스를 사용하여 변수 로드

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

관련 정보