현재 범위 외부에서 사용할 수있는 bash 스크립트에서 시스템 환경 변수를 설정해야합니다.bash에서 시스템 범위 환경 변수를 내보내는 방법
수출 MY_VAR =/옵션/my_var
그러나 나는 비록 시스템 레벨에서 사용할 수 있도록 환경 변수를 필요 : 그래서 당신은 일반적으로 다음과 같이 환경 변수를 내보낼 것이다. 이것이 가능한가?
현재 범위 외부에서 사용할 수있는 bash 스크립트에서 시스템 환경 변수를 설정해야합니다.bash에서 시스템 범위 환경 변수를 내보내는 방법
수출 MY_VAR =/옵션/my_var
그러나 나는 비록 시스템 레벨에서 사용할 수 있도록 환경 변수를 필요 : 그래서 당신은 일반적으로 다음과 같이 환경 변수를 내보낼 것이다. 이것이 가능한가?
이 당신이 원하는 것을 할 수있는 내가 알고있는 유일한 방법입니다 :
#!/bin/bash
echo MYVAR=abc123
을 그리고 당신은 변수의 값을 취득하고자 할 때, 당신이 가지고 :
foo.sh에서, 당신은 다음을 수행 : 당신이 원하는, 그리고 어떻게 당신이 그것을하고 싶은 소스 사용에 대한 더글러스 Leeder 씨의 제안을 사용할 수 있는지에 따라
$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH
$ echo $MYVAR #==> abc123
을하지만 전체 파일, 기능 소스 것이며, 모두. eval을 사용하면 에코 된 내용 만 평가됩니다.
사실 - 일단 하위 프로세스에서 실행 중이면 부모에게 영향을 줄 수 없습니다.
이 두 가지 가능성 :
1) 소스 스크립트를 실행하기보다는 (source . 참조)
source {script}
2) 가지고 스크립트 출력 수출 명령을하고, 평가한다 :
eval `bash {script}` OR: eval "$(bash script.sh)"
EDIT : 소스가 아닌 eval이되도록 두 번째 옵션이 수정되었습니다. Opps.
/etc/profile에 변수를 설정하십시오 (필요한 경우 파일을 작성하십시오). 기본적으로 모든 bash 프로세스에서 변수를 사용할 수 있습니다.
/etc/profile에 변수를 설정하십시오 (필요한 경우 파일을 작성하십시오). 기본적으로 모든 bash 프로세스에서 변수를 사용할 수 있습니다. 모든 새로운 bash는 프로세스
...
난 그냥 나 자신 그렇게하려고 노력했다. eval과 $ (foo)를 제외하고는 eval에 대한 인수를 따옴표로 묶지 않았습니다. 일하지 않았어. 구문 수정을 주셔서 감사합니다. – jmanning2k