모든 쉘에서 실행되어야하는 env 및 start.env. 실제로 env 변수 설정이 예상대로 작동하지 않는 KORN을 제외하고는 수행합니다. 그러니 예를보세요.
set.env 파일 :
#!/bin/bash
export MY_VAR="home" || setenv MY_VAR "home"
start.sh 파일 :
#!/bin/bash
command . ./set.env || source set.env
echo "$MY_VAR"
변수의 인쇄를 볼 수 있습니다. 그러나 ksh에서 터미널에서 에코를 시도하면 정의되지 않은 것으로 바뀌 었습니다.
ksh$ start.sh
home
ksh$ echo $MY_VAR
ksh$
내 세션에서 $ MY_VAR를 볼 수있을 것으로 기대합니다. 어떤 아이디어라도 있습니까? // 빨간 모자 아래에서 실행
을 실행하면 start.sh
소싱이 아닌 하위 명령으로 실행됩니다. 결과적으로 환경 변수에 대한 변경 사항은 해당 프로세스와 그 자식으로 범위가 지정됩니다. 프로세스가 종료되면 설정 한 환경 변수도 함께 죽습니다.
스크립트를 이식 가능하게 소싱하고 현재 셸에서 실행하여 해당 셸 내에서 환경 변수를 설정하려면 다음을 실행합니다.
# this works on any POSIX shell, including ksh (and bastardizations such as mksh)
. start.sh
... 또는 덜 이식성 :
# this is a bashism
source start.sh
연습으로 BTW command . ./set.env
는 ... 이상합니다. command
쉘 함수의 실행을 방지하지만 이름 .
이 지정된 함수 가 정의 된 환경은 틀림없이 버그가있는 환경입니다. . start.sh
혼자 고려하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다