2014-09-13 4 views
1

은 내가에서 스크립트를 시작하고 쉘에 영향을 미치는하는 Python 스크립트를 사용하여 환경 변수를 설정하고자합니다. 여기에 내가현재 쉘에서 파이썬으로 환경 변수를 설정하는 방법은 무엇입니까?

python -c "import os;os.system('export TESTW=1')" 

그러나 명령

echo ${TESTW} 

아무것도 반환을 의미하는 것입니다. 또한 표현식이

python -c "import os;os.environ['TEST']='1'" 

인 표현식이 있습니다.

직접적인 의미에서이 작업을 수행 할 수있는 다른 방법이 있습니까? 아니면 파이썬 스크립트의 '외부'에서 실행하는 파일에 변수를 쓰는 것이 낫습니까?

답변

1

다음 환경을 통해 환경에 영향을 줄 수 있습니다. putenv 발신자 환경에는 영향을 미치지 않으며 분기 된 하위 환경에만 영향을줍니다. python 스크립트를 시작하기 전에 환경을 설정하는 것이 훨씬 낫습니다.

이 변형을 제안 할 수있다. bash 스크립트와 python 스크립트를 만듭니다. bash 스크립트에서는 params를 사용하여 python 스크립트를 호출합니다. 하나의 매개 변수 - 하나의 env 변수. 예 :

#!/bin/bash 

export TESTV1=$(python you_program.py testv1) 
export TESTV2=$(python you_program.py testv2) 

you_program.py testv1은 하나의 env 변수에 대한 값만 반환합니다.

+0

글쎄,이 컨텍스트에서는이 python 스크립트를 사용하여 환경을 설정합니다. – Alex

0

chepner 및 Maxym (Python 스크립트에서 값을 제공하고 쉘에서 변수를 내 보냅니다)에서 제안한 솔루션을 사용하는 것이 좋습니다. 그것이 당신에 대한 옵션이없는 경우에도 파이썬 스크립트가 현재 Bash 과정의 글을 어떻게 실행 eval을 사용할 수

eval $(python -c "print('export TESTW=1')") 

주의 : eval 보통 배쉬 프로그래밍에서 "악의"를 읽습니다. 경험상 일반적으로 통제 할 수없는 코드를 "맹목적으로"실행하는 것을 피해야합니다. 여기에는 런타임에 다른 프로그램에서 생성되는 내용도 포함됩니다. Stack Overflow question Why should eval be avoided in Bash, and what should I use instead?도 참조하십시오.

관련 문제