쉘 변수를 스크립트 실행 경로인 $PWD로 설정하려고 합니다. 이것이 내가 가지고 있는 것입니다(setenv.sh):
#!/bin/bash
export WORK_AREA=$PWD #also tried "$PWD", $(pwd), `pwd`
하지만 쉘에서 실행하면
> ./setenv.sh
> echo $WORK_AREA
WORK_AREA에 값이 없습니다.
답변1
export
"위"가 아닌 "아래"로 작업하십시오. 쉘의 하위 스크립트에서 값을 내보낼 때 해당 값을 상위 쉘로 내보내지 않습니다. 그것은 단지 자신의 자녀를 위한 환경을 변화시킬 뿐입니다.
답변2
스크립트가 현재 쉘 환경에 영향을 미치도록 하려면 스크립트 소스를 가져와야 합니다. 예를 들면 다음과 같습니다.
source setenv.sh
또는 점 표기법을 사용하세요.
. setenv.sh
스크립트를 실행하면 마치 명령을 사용하여 실행한 것처럼 하위 쉘에서 실행됩니다 bash
. 하위 셸 환경에 대한 변경 사항은 상위 환경에 영향을 주지 않습니다. 여기서는 환경 변수만 논의하고 있다는 점에 유의하세요. 하위 셸에서 파일을 수정하면 변경 사항이 상위 셸로 전파됩니다.
관련 슈퍼유저 게시물 보기: