2010-12-10 3 views
1

나는 Terminal.app와 iTerm을 사용하는데 둘 다 여러 탭과 여러 창을 통해 동시에 여러 셸을 실행하는 것을 지원합니다. 종종이 기능을 사용하지만 결과적으로 환경 변수 설정을 변경하려면 일반적으로 열어 본 모든 단일 탭과 창에서 동일한 명령을 한 번 실행해야합니다. 나는 미래에 열립니다. 셸이 서로 통신하여 환경 변수를 한 번 변경하고 현재 실행중인 다른 모든 셸로 변경 내용을 전파 할 수 있습니까?실행중인 모든 셸에서 환경 변수를 수정하려면 어떻게해야합니까?

.bashrc과 같은 스타트 업 파일에서 env 변수를 정적으로 설정할 수 있다는 것을 알고 있습니다. 나는 또한 부모 껍질의 환경을 상속받을 수있는 서브 셸을 일반적으로 또는 screen을 통해 가질 수 있음을 알고 있습니다. 이들 옵션 중 어느 것도이 문제를 다루지 않습니다. 이 질문은 특히 현재 실행중인 여러 쉘의 환경을 동시에 동적으로 변경하는 것에 관한 것입니다.

이상적으로는이 변수의 내용을 언제든지 디스크에 쓰지 않고이 작업을 수행하고 싶습니다. 내가 이것을 할 수 있기를 원하는 이유 중 하나는 해시 된 암호와 같은 env 변수에 중요한 정보를 설정하고 나중에 다른 쉘에서 참조 할 수 있도록하는 것입니다. 로그인 할 때 이러한 변수를 한 번 설정하고 로그 아웃 할 때까지 또는 시스템을 다시 시작할 때까지 모든 쉘에서 참조 할 수 있어야합니다. (이것은 ssh-agent이 작동하는 방식과 유사하지만, 알고있는 한, ssh-agent은 env 변수가 아닌 SSH 키만 저장합니다.)

쉘은 이렇게 통신 할 수 있습니까?

+0

죄송합니다. 그러나 이것은 서버 오류 질문입니다. – rook

답변

1

오른쪽. 각 프로세스는 환경 변수를 자체적으로 가지고 있기 때문에 한꺼번에 변경할 수는 없습니다. 그래도 마음을 충분히 굽히면 이상한 해결 방법이 있습니다.

예를 들어, 현재 명령을 실행하여 각 명령을 업데이트하면 명령 실행을 자동화 할 수 있습니다. bash 맨 페이지에서 PROMPT_COMMAND를 점검하십시오. PROMPT_COMMAND는 bash 프롬프트가 인쇄 될 때마다 명령을 실행할 수 있습니다. 대부분의 쉘은 비슷한 것을 가지고 있습니다.

ssh-agent와 같은 것이 아닌 envvar에서 암호를 가져 오기 때문에 해시 암호를 디스크에 두지 않는 한, 그것은 전체적인 주제가 될 것입니다.

1

자신 만의 쉘을 작성하지 않으면 그렇게 할 수 없습니다. ssh-agent는 각 SSH 클라이언트가 키에 접속하도록함으로써 작동하지만, 가장 일반적인 쉘은 비슷한 메커니즘을 가지고 있지 않습니다.

관련 문제