2011-02-24 6 views
0

누군가 나를 도울 수 있기를 바랍니다. 파이썬과 다른 라이브러리 용 설치 셸 스크립트를 작성했습니다. 모든 패키지는 선택된 폴더에 설치됩니다. 예를 들어 "~/Desktop/inst"가 아니라 "/ usr/local"아래에 있습니다. 문제는 환경 변수가 설정된 경우 설치가 엉망이 될 수 있다는 것입니다. 어떻게 든 그것을 막을 수 있습니까? 어쩌면 설정된 환경 변수를 무시하십시오. 아니면 다른 트릭이 있습니까?Mac에서 환경 변수를 무시하는 방법은 무엇입니까?

+0

는이 점 아닌가요 그들이 환경의 일부인 환경 변수 중 무엇입니까? 스크립트에 로컬 변수가 필요한 경우 구성 파일에서 변수를 읽지 않는 이유는 무엇입니까? –

+0

그러나 macports가 설치된 경우 PATH =/opt/local 또는 QTDIR 경로가 설정되어 있거나 다른 경로가 설정되어있을 수 있습니다. 그리고 나는 기계에 설치되어있는 물건을 사용하거나 빌드하고 싶지 않습니다. 스크립트에서 패키지를 설치하고 사용하기를 원합니다. 물론 모든 것을 usr/local 또는 아마/opt/local에 설치할 수는 있지만 설치 셸 스크립트의 요점은 시스템을 만지지 않는 것입니다. – Oli

답변

0

예 ... loginhook을 찾아서 mach에 대한 loginhook으로 스크립트를 실행하십시오. 시스템이 로그인 할 때 변수가 없으면 변수가 없으므로 응용 프로그램이 잘 실행되어야합니다. 도움이되기를 바랍니다. 여기에 loginhook [여기]로 앱을 설정하는 방법을 알기위한 링크가 있습니다. 당신은 (PATH처럼 당신이 원하는 사람/유지하기 위해 필요 제외) 설정 어떤 변수를 참조하고 설정을 해제 할 printenv를 사용할 수있는이 http://hints.macworld.com/article.php?story=2006081701162739

0

도움이되기를 바랍니다 :

for var in $(printenv | sed 's/=.*//'); do 
    case "$var" in 
     TERM|SHELL|TMPDIR|USER|PATH|PWD|HISTCONTROL|SHLVL|HOME|LOGNAME|DISPLAY) 
     : ;; # Leave these untouched 
     *) 
     unset "$var" ;; 
    esac 
done 
PATH=/usr/bin:/bin:/usr/sbin:/sbin # Override existing PATH with standard value 
관련 문제