bash 스크립트에서 전역 환경 변수를 설정하는 방법은 무엇입니까?쉘 스크립트의 전역 환경 변수
나는 물건
#!/bin/bash
FOO=bar
... 또는
#!/bin/bash
export FOO=bar
처럼 ... 바르 난 후에 계속 사용하고 싶습니다 반면, 로컬 컨텍스트에 머물 것으로 보인다 할 경우 스크립트가 실행을 마쳤습니다.
bash 스크립트에서 전역 환경 변수를 설정하는 방법은 무엇입니까?쉘 스크립트의 전역 환경 변수
나는 물건
#!/bin/bash
FOO=bar
... 또는
#!/bin/bash
export FOO=bar
처럼 ... 바르 난 후에 계속 사용하고 싶습니다 반면, 로컬 컨텍스트에 머물 것으로 보인다 할 경우 스크립트가 실행을 마쳤습니다.
는 현재 쉘 환경에서 스크립트를 실행합니다 .
. myscript.sh
이 당신의 스크립트를 실행합니다.
export
변수가 새로운 프로세스를 사용할 수있는 지배, 그래서 당신은
FOO=1
export BAR=2
./runScript.sh
을 말한다면 다음
$BAR
는
runScript.sh
의 환경에서 사용할 수 있지만
$FOO
은하지 않습니다.
셸 스크립트를 실행하면 하위 셸에서 수행되므로 상위 셸 환경에 영향을 미치지 않습니다. 당신은 수행하여 스크립트 소스하려면 :
는. ./setfoo.sh
이 아닌 서브 쉘과 같이 현재 쉘의 맥락에서 그것을 실행합니다. bash는 남자 페이지에서
:
. 파일 이름 [인수]
소스 파일 이름 [인수]읽고는 현재 쉘 환경에서 파일 이름에서 명령을 실행하고 마지막 명령의 종료 상태는 파일 이름에서 을 실행 돌아갑니다.
파일 이름에 슬래시가 없으면 PATH의 파일 이름을 사용하여 에 filename이 들어있는 디렉토리를 찾습니다.
PATH에서 검색 한 파일을 실행할 필요가 없습니다. POSIX 모드에서 bash가 이 아닌 경우, 파일이 발견되지 않으면 현재 디렉토리가 검색됩니다. PATH.
shopt 기본 제공 명령에 대한 sourcepath 옵션이 해제되어있는 경우 PATH가 검색되지 않습니다.
인수가 제공되면 filename이 실행될 때 위치 매개 변수 이됩니다.
그렇지 않으면 위치 매개 변수가 변경되지 않습니다.반환 상태 은 스크립트 내에서 마지막으로 종료 된 명령의 상태입니다 ( 명령이 실행되지 않으면 0). filename이 없거나 을 읽을 수없는 경우 false입니다.
흥미 롭습니다 - 이전에 그 구문을 보지 못했습니다. 이것은 소스 ./setfoo.sh와 동일합니까? –
똑같은 방식으로 입력하는 것이 더 빠르며 (예전 시스템에서는 호환 가능합니다. ksh에는 소스 명령이 없지만 '.'이 있습니다). – paxdiablo
#!/bin/bash
export FOO=bar
또는
#!/bin/bash
FOO=bar
export FOO
남자 수출 :
그들이에 원인이 될 것이다 지정된 이름에 해당하는 변수로 반출 속성을하여야한다 셸 환경에서 실행됩니다. 변수의 이름 다음에 = word가 오는 경우 해당 변수의 값은 word로 설정됩니다.
쉘 스크립팅의 모든 초보자에게 : envvar 이름, '='문자와 값 자체 사이에 공백이 없으므로주의하십시오. 이것은 작동하지 않을 것입니다 :'export FOO =/mydir/bar' – russellhoff
source myscript.sh
또한 가능하다. 리눅스 명령 source
에 대한
설명 :이 문제가 해결되지
source is a Unix command that evaluates the file following the command,
as a list of commands, executed in the current context
여기에 더 많은 정보가 있습니다. '소스'가 무엇을하는지에 대한 간단한 설명은 어떨까요? –
@PhillipCloud 유형의 'man source'가 터미널에 있으면 원하는 것을 얻을 수 있습니다. – CDT
나는 '소스'에 익숙하다. 어쩌면 OP가 아닌 것 같습니다. –
처음주의하십시오. 슬래시가 없으면 경로에서 보일 것입니다 : '와 같은 것을 사용하십시오. ./myscript.sh '가 특정 스크립트를 실행하는지 확인하려는 경우. – paxdiablo
전 세계가 글로벌이라고 생각했습니다 !!! 이것은 문제 해결의 마지막 1 시간을 지 웁니다. – Dennis
'source'는'.'의 별칭입니다. 그래서 당신이 더 명시 적으로하고 싶다면'source myscript.sh'를 대신 실행할 수 있습니다. –