2008-11-20 10 views
7

현재 범위 외부에서 사용할 수있는 bash 스크립트에서 시스템 환경 변수를 설정해야합니다.bash에서 시스템 범위 환경 변수를 내보내는 방법

수출 MY_VAR =/옵션/my_var

그러나 나는 비록 시스템 레벨에서 사용할 수 있도록 환경 변수를 필요 : 그래서 당신은 일반적으로 다음과 같이 환경 변수를 내보낼 것이다. 이것이 가능한가?

답변

5

이 당신이 원하는 것을 할 수있는 내가 알고있는 유일한 방법입니다 :

#!/bin/bash 
echo MYVAR=abc123 

을 그리고 당신은 변수의 값을 취득하고자 할 때, 당신이 가지고 :

foo.sh에서

, 당신은 다음을 수행 : 당신이 원하는, 그리고 어떻게 당신이 그것을하고 싶은 소스 사용에 대한 더글러스 Leeder 씨의 제안을 사용할 수 있는지에 따라

$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH 
$ echo $MYVAR #==> abc123 

을하지만 전체 파일, 기능 소스 것이며, 모두. eval을 사용하면 에코 된 내용 만 평가됩니다.

+0

난 그냥 나 자신 그렇게하려고 노력했다. eval과 $ (foo)를 제외하고는 eval에 대한 인수를 따옴표로 묶지 않았습니다. 일하지 않았어. 구문 수정을 주셔서 감사합니다. – jmanning2k

13

사실 - 일단 하위 프로세스에서 실행 중이면 부모에게 영향을 줄 수 없습니다.

이 두 가지 가능성 :

1) 소스 스크립트를 실행하기보다는 (source . 참조)

 
    source {script} 

2) 가지고 스크립트 출력 수출 명령을하고, 평가한다 :

 
    eval `bash {script}` 
OR: 
    eval "$(bash script.sh)" 

EDIT : 소스가 아닌 eval이되도록 두 번째 옵션이 수정되었습니다. Opps.

1

/etc/profile에 변수를 설정하십시오 (필요한 경우 파일을 작성하십시오). 기본적으로 모든 bash 프로세스에서 변수를 사용할 수 있습니다.

0

/etc/profile에 변수를 설정하십시오 (필요한 경우 파일을 작성하십시오). 기본적으로 모든 bash 프로세스에서 변수를 사용할 수 있습니다. 모든 새로운 bash는 프로세스

...

관련 문제