|
MacOS의 환경변수를 리눅스나 유닉스에서 하던 버릇대로 .profile이나 .rc 계열 파일에 하면 경우에 따라 적용이 안 될 수 있다.
사용자별 개인 환경 변수는 ~/.MacOSX/environment.plist 파일에 설정하면 (아마도 재 로그인 후에) 되는데, 버그인지 의도된 동작인지 Spotlight를 통해 접근하는 프로그램은 이것이 안 먹힌다고 한다. 시스템 전체에 통용되는 환경변수는 /etc/launchd.conf 파일로 설정한다. (재부팅 필요) 이 경우는 Spotlight에서도 잘 동작한다고 한다. 이 두 파일은 따로 설정하지 않으면 존재하지 않는 파일이다. 터미널 쉘에서 직접 생성하던지 하는 방법으로 만들어 쓰면 된다. plist파일은 xml포맷인데 애플의 FAQ를 참고해서 작성하면 될 것 같다. launchd.conf파일은 csh에서 하듯이 setenv형식으로 입력하면 된다. export가 되는지는 나도 테스트를 못 해봤다. 내가 본 블로그에서 setenv만 해 놔서 일단 따라하기만 급급했기 때문이다. 나중에 시간되면 export도 가능한지 확인해볼 생각이다. 약간 부연 설명을 하자면 리눅스는 프로세스가 shell에서 시작하는 것으로 추측이 된다. 그래서 X프로세스도 쉘에서부터 시작하기 때문에 그 환경변수도 그대로 넘어오는 것이 아닌가 싶다. 반면에 맥오에스는 파인더에서 실행되는 프로세스는 쉘을 안 거치고 WindowServer 에서 시작한다고 한다. 그렇기때문에 직접 터미널을 띄워서 실행한 경우를 빼면 profile과 rc파일에 설정한 환경변수가 안 먹히게 된다. 하지만 spotlight에서 실행시킬 때는 WindowServer를 안 거치나보다. 맥오에스의 모든 프로세스의 실제 부모 프로세스는 launchd 라고 하더라. 그래서 /etc/launchd.conf 에 설정을 한다고 한다. 최초의 내용은 http://www.dhptech.com/node/22 에서 봤고 이 쓰레드의 링크를 통해 알아낸 http://www.digitaledgesw.com/node/31 에서 더 자세한 내용을 찾을 수 있었다. 애초 시작은 eclipse에서 System.getenv() 메써드를 실행했을 때 null을 반환하길래 터미널에서 직접 컴파일해 실행해보니 잘 나오는 거였다. 그래서 이클립스 버그인 줄 알고 계정까지 등록해서 버그 리포트를 하려는 찰나, 샘플로 넣을 코드의 환경변수가 나 혼자만 쓰는 거라 모든 사람의 컴퓨터에 다 있을법한 PATH를 넣었는데, 그걸 가지고 실행하니 값이 나오더라ㅡ.ㅡ; 그런데 나온 결과가 내가 설정한 내용과 달리 시스템 처음 깔 때 기본으로 잡힌 내용만 나와서 부랴부랴 더 조사해보니 내가 삽질할 뻔 했다는 것을 알았다. 사실은 이미 getenv가 내가 예상했던 메써드가 아닌가 싶어서 다른 삽질로 코드를 구현해 놨었다ㅡ.ㅡ;; 그거를 다시 getenv써서 하는 것으로 고쳐야한다. ------------- 내용 추가 : 포스트를 쓰고 나서 다른 문제를 발견했다. launchd.conf나 environment.plist에서 정의한 환경 변수는 외부에서 ssh로 접속할 경우 적용이 안 된다. 이것도 나름대로 문제다. 어찌해야할까.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
|