|
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로 접속할 경우 적용이 안 된다. 이것도 나름대로 문제다. 어찌해야할까.
일 때문에 한 대의 머신에서 JEUS와 JBOSS를 동시에 띄워야할 일이 생겼다. 그런데 이 두 놈이 모두 8080포트를 차지하려고 하는 것이다. 그러다보니 당연히 먼저 실행해서 포트를 가져간 놈만 부팅이 되 버린다. 그래서 어느 쪽이던지 기본 포트를 바꾸려고 하려다보니 양쪽 매뉴얼이 다 불친절해서 포트번호 바꾸는 것을 안 가르쳐주더라.
그래도 영어만으로 소통해야하는 JBOSS보다는 제우스가 좀 더 친절할 거 같아서 문의를 했고 그 답을 얻었다. $JEUS_HOME/webserver/config/ws_engine.m 이 파일에서 포트를 바꾸면 된다. 물론 이 포트만 바꾼다고 제대로 두 개를 띄울 수 있는 것은 아니다. 다른 서비스에서도 포트 충돌이 나기 때문에 그것들도 모두 다른 포트로 설정해 주어야한다. 하지만, 천릿길도 한 걸음부터라고 일단 기본부터 해결했으니 다른 것도 하나하나 고쳐봐야겠다. cvs 에서 하는 것보다 약간 더 귀찮아보인다. $ svn propset svn:ignore {ignore-pattern} . 이 명령은 현재 디렉토리에서 해당 패턴을 가진 파일들을 무시한다는 의미이다. 파일 패턴이라 *와 ?등이 먹힐 것이다. 문제는 하나의 패턴으로 다 지정할 수 없는 경우이다. 예를들어 maven으로 관리하는 프로젝트를 이클립스로 사용할 때 중간 생성파일인 .project , .classpath, .settings, target 을 모두 무시하려고 하는데 패턴으로는 도저히 답이 안 나온다. 파일 하나씩 순차적으로 svn을 실행하면 앞의 명령을 덮어써 버린다. 이 경우는 해당 파일 목록을 한 줄에 하나씩 담은 텍스트파일을 하나 만들고 나서 svn에서 그 파일을 읽어서 무시 목록을 만들도록 하면 된다. $ svn propset svn:ignore -F ignore.txt . svn자체에서 무시하는 방법은 svn의 설정파일에서 하면 된다. global-ignores = *.class *.o 이 파일은 설치한 플랫폼에 따라 /etc/subversion/config에 있을수도 있고 다른 곳에 있을 수도 있다. 아예 없을 수도 있더라. 아니면 자기 계정에 있는 파일만 고치면 자신의 계정에 설정할 수 있다. ~/.subversion/config를 고치자.
시작은 단순했다. ![]() 일차 목표는 달성했으니 이제 그만둘까... 아니면 새로운 목표를 만들어서 도전할까... 그런데 뭔가 도전과제를 만들면 근무시간에도 지장을 주는 일이 생기니 좀 여유있게 하는게 필요할 거 같다. 확 999연승을 목표로 잡아볼까. 이건 앞으로 한 번도 안 진다고 해도 올해안에는 안 되겠네. ------------------- 처음 포스트 올리고 몇 시간 후, 1승을 더 하고 딱 100연승 만들고 나서 1패가 생겼다.
1. 시스템 환경설정에서 인터넷&네트워크 그룹의 공유 패널에 들어가서 원격 로그인을 활성화시킨다.
![]() 2. /private/etc/ssh_config 파일에 ForwardX11 yes 를 추가한다. (아마도 터미널에서 해야 이 디렉토리가 보이겠지) 3. 터미널에서 xhost + 를 쳐서 실행시킨다. 끝이다. 간만에 맥오에스 다시 설치하고 한동안 X 쓸 일 없어서 놔두었었다가 방법을 까먹어 이틀을 헤멘 것 같다.
|
메뉴릿
메모장
카테고리
최근 등록된 덧글
이글루링크
|