dyld:DYLD_环境variables被忽略,因为主可执行文件(/ usr / bin / sudo)是setuid或setgid

自从10.8的更新,我试图做一个sudo命令时,得到以下错误,这是非常恼人的。

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

这是什么意思? 我希望任何人都可以帮忙。

这似乎是在10.8中引入的一个错误,请参阅本报告 。 据我所知,唯一的解决方法是默认情况下不设置DYLD_LIBRARY_PATH或LD_LIBRARY_PATH,但只在需要时。

在zsh:

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

这产生了一个sub-shell,其中sudo所抱怨的环境variables是未设置的,然后执行sudo(通过exec使得现在不必要的父shell立即退出)。

我将把它作为一个练习,让读者转向bash等等。

不知道官方解决的办法是什么,但我用这个bashrc黑客解决了这个问题,因为我再也看不到这个该死的警告了。

把它放在/ etc / bashrc或者你的生活中。

 # 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 

那些使用django(python for web),通过MySQLdb(Mysql-Python模块)使用mysql,需要设置variables。 所以我现在只是保留警告。

似乎已经提到的“修复”只是解决方法,可能不适用于所有用户。 这是苹果(至less)知道的一个已知的错误: http : //openradar.appspot.com/11894054

这个问题终于在OS X Mavericks(10.9)上得到修复,sudo上不再出现这个消息。