sudo의 성가신 메시지를 Mountain Lion 10.8.0에서 삭제할 수 있습니까? 검사를 했어.

10.8.0으로 업그레이드 한 후에는 언제든지 sudo, 나는 항상이 메시지를 받는다 :

dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

나는 내 검사를 했어. .bash_profile, .zshrc 내가 생각할 수있는 모든 것, 그리고 나는 DYLD_ 환경.

몇 시간 동안 인터넷 검색을 한 후이 두 줄을 내 .zshrc:

unset LD_LIBRARY_PATH
unset DYLD_LIBRARY_PATH

그러나 성가신 메시지는 여전히 나타납니다.

나는 손님 계정으로 가서 sudo 그러나 didnt는 ‘이 메시지를 얻는다. 그래서 몇 가지 사용자 정의 라이브러리를 설치 한 것 같아요 …하지만이 디버깅하는 방법을 모르겠습니다.



답변

다른 DYLD_ 변수가 설정되어 있습니까? 운영 set 매개 변수없이 모든 변수를보고 해당 접두사와 함께 나오는 모든 것을 설정 해제하십시오.

DYLD_PRINT_WARNINGS를 활성화하지 않으면 이러한 메시지가 인쇄되지 않아야한다는 점에 유의하십시오.

또한 10.8.1에 대한 업데이트는이 성가심을 패치 한 것으로 보입니다.


답변

zsh에서 :

 sudo () { ( unset LD_LIBRARY_PATH DYLD_LIBRARY_PATH; exec command sudo $* ) }

이것은 sudo가 불평하는 환경 변수가 설정되지 않은 하위 셸을 생성 한 다음 sudo를 실행합니다.

몇 가지 다른 답변에 대한 장점은 다음과 같습니다.

  • 대화식 쉘 환경에서 LD_LIBRARY_PATH 및 DYLD_LIBRARY_PATH를 제거하지 않습니다 (필요한 sudo가 아닌 명령의 경우).
  • 하위 쉘을 사용하면 실행 중 (예 : Ctrl-C)에 sudo를 중단하면 마스터 쉘에서 LD_LIBRARY_PATH 및 DYLD_LIBRARY_PATH가 변경되지 않습니다 (대화식 쉘에서 설정 및 해제하는 다른 응답의 스크립트와는 다릅니다) ).
  • exec를 사용하면 sudo를 호출 할 때 즉시 불필요한 부모 쉘이 종료되므로 명령 실행 중에 여분의 프로세스가 멈추지 않습니다.

독자에게 bash로 이식하는 연습으로 남겨 둘 것입니다.


답변

yokyoh1987에 의해 사과 지원 포럼에서 발견 된 문제를 해결하십시오.

https://discussions.apple.com/thread/4143805?start=30&tstart=0

.profile / .bashrc / .bash_profile (터미널 설정에 따라 다름) :

# set DYLD_* for my normal programs
DYLD_LIBRARY_PATH='..'

# set an alternative sudo
thesudo()
{
# back up the DYLD_* variables
local BACK=$DYLD_LIBRARY_PATH

# unset DYLD_*
unset DYLD_LIBRARY_PATH

# calling sudo
/usr/bin/sudo "$@"

# restore DYLD_* after sudo finished
export DYLD_LIBRARY_PATH=$BACK
}

# redirect sudo
alias sudo=thesudo

답변

아마 LD_LIBRARY_PATH가 설정되어있을 것입니다.