2014-06-11 1 views
0

다음 bash 스크립트가 있습니다.bash 스크립트에서 변수를 환경으로 다시 익스포트

export KEY=A 
run_command_that_uses_KEY 
... 
export KEY=B 
run_command_that_uses_KEY 

export는 하위 쉘 (즉, 내보내기 지시문이 포함 된 쉘의 하위 프로세스로 시작되는 쉘)로 변수 할당을 내 보냅니다. 명령 행 환경은 스크립트 쉘의 부모이므로 변수 할당을 볼 수 없습니다. 부모 셸이 올바른 키를 내보내도록하려면 어떻게해야합니까? bash 스크립트 자체 또는 무엇인가에서 bash 스크립트를 구할 수 있습니까?

+0

"부모 껍질을 어떻게 강요 할 수 있습니까?"라는 질문을받을 때 날카로운 방향으로 움직이는 것처럼 보입니다. 너 뭐하려고? –

+0

두 번째'run_command_that_uses_KEY'는 여전히 B 대신 A를 얻습니다. –

+0

그게 무슨 일입니까? 실제로는'export '를 사용해야 만합니다. 그 후에, 쉘은 그것이 export 된 것을 알고, 변경은 export 될 것이다. –

답변

3

변수를 내보낼 때 문제가되지 않습니다. 당신은 하찮게이이 bash 측면에서 제대로 작동하는지 확인할 수 있습니다 : 귀하의 경우

export KEY=A 
bash -c 'echo $KEY' 
export KEY=B 
bash -c 'echo $KEY' 

문제는 프로그램이 단일 인스턴스 가능성이 높습니다.

위의 코드를 firefox 또는 gedit과 같이 입력하면 변수가 처음에는 작동하지만 두 번째에는 작동하지 않습니다.

처음부터 프로그램이 처음부터 시작되고 두 번째로는 이전 프로세스에 새 창을 여는 메시지 만 전송되기 때문입니다.

다시 호출하기 전에 작업과 관련된 모든 프로세스를 종료 할 수 있습니다.

+0

그게'run_command_that_uses_KEY'가 여전히 B를 얻었지만'KEY'는 B 였고 바로 전에 그것을 죽인 것입니다. –

관련 문제