2011-04-06 4 views
2

쉘 변수를 읽기 위해 ENV 해시에 액세스하는 Ruby로 작성된 TextMate 번들이 있습니다.내 TextMate 번들이 때때로 환경/셸 변수에 액세스하지 못하는 이유는 무엇입니까?

때때로이 변수를 읽는 데 성공하고 때로는 찾지 못합니다. 나는 그 패턴을 알아낼 수 없었다.

TextMate 번들에서 볼 수있는 셸 변수는 무엇이 달라야합니까?

갱신

헥타르 아! 명령 줄에서 TextMate를 시작하면 작동합니다. 도크에서 실행하면 명령 행에서 디렉토리를 열어도 작동하지 않습니다.

이제 TextMate가 이러한 환경에서 다양한 환경을 선택하는 이유는 무엇입니까? 그렇다면이 두 가지 환경을 동일하게 만드는 방법이 있습니까?

+0

확실하지는 않지만, 변수를 항상 재정의하려는 경우 기본 설정을 통해 추가 할 수 있습니다. – prodigitalson

답변

2

Textmate는 launchd를 통해 실행되며 셸에서는 실행되지 않습니다.

셸에서 직접 실행하면 $ PATH가 넘어갑니다 (open -a Textmate는 작동하지 않고 open은 환경을 Textmate로 전달하지 않습니다). 이 문제를 해결 얻을

방법은 environment.plist, launchctl, 또는 launchd.conf 있습니다 : 당신이 /etc/launchd.conf하고 재부팅을 편집하는 경우

Setting environment variables in OS X?

갱신

변경 사항이 적용됩니다 . 각 행은 setenv VAR_NAME "VAR_VALUE"과 같은 launchctl 명령이 될 수 있습니다. 그런 다음 launchctl your_file으로이 파일을 실행할 수 있습니다.

재부팅이 필요합니다. 그리고 사용자 별 환경 설정을 원한다면 좋지 않습니다. Apple은 ~/.launchd.conf을 사용자 별 설정에 사용할 수 있지만 아직이 기능을 구현하지 않았다고 제안합니다.

로그인 할 때 LoginHook 및 LogoffHook (Apple's documentation 참조)을 사용하여 스크립트가 실행되도록 설정할 수 있습니다. 또는 LaunchAgents를 사용하십시오. LaunchAgent 설정 방법에 대한 자세한 지침은 nicksay의 게시물 this Macworld post을 참조하십시오.

로그인하는 동안 launchctl setenv 명령이 작동하지 않는 것 같습니다. 현재이 문제에 대해 머리가 맞고 있습니다.

나는 기본적으로 (Makefile 번들은 gcc에 LIBRARY_PATH를 전달하지 않을 것입니다) 문제가 발생했습니다. 이제 로그인 할 때 변수 할당 파일을 읽을 파이썬 스크립트를 작성합니다. 현재 환경 및 해당 파일을 할당과 함께 복사 한 다음 로그 아웃시 모든 변수를 언로드하십시오. 그것은 또한 나에게 상기시킨다, 나는 갱신 옵션을 가져야한다. 끝나면 여기에 github repo에 대한 링크가있는 의견을 게시 할 것입니다. 그것이 효과가 있다면, 그렇습니다.

+0

항상 Textmate에서 보는 환경에 항상 환경을 병합하려면 일종의 임시 해결책이 있어야합니다. 또한 이것이 때때로 작동하는 것이지 모든 시간에 작동하지 않는 이유를 설명하지는 않습니다. –

+0

아하하 - 명령 줄에서 textmate를 실행하면 작동합니다. 도크에서 실행하면 명령 행에서 디렉토리를 열어도 작동하지 않습니다. –

+0

(질문 업데이트) –

관련 문제