48

自从更新到 10.8 后,在尝试执行 sudo 命令时出现以下错误,这很烦人。

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

那是什么意思?我希望任何人都可以提供帮助。

4

7 回答 7

43

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

于 2012-08-22T12:39:53.190 回答
20

在 zsh 中:

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

这会生成一个子 shell,其中 sudo 抱怨的环境变量未设置,然后执行 sudo(通过 exec 以便现在不需要的父 shell 立即退出)。

我将把它作为练习留给读者移植到 bash 等。

于 2013-02-26T15:49:03.533 回答
7

不知道官方的解决方案在哪里,但我用这个 bashrc hack 解决了它,因为我无法再看到那个该死的警告。

把它放在 /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
于 2013-04-17T02:00:19.257 回答
5

那些使用 django(python for web),通过 MySQLdb(Mysql-Python 模块)使用 mysql 的人需要该变量集。所以我现在只保留警告。

于 2013-01-22T09:21:24.737 回答
1

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

于 2013-10-23T18:31:08.593 回答
1

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

于 2013-09-09T23:07:52.787 回答
-1

不确定这是否是一个真正的修复,但是当我运行 Clean Build Folder 时这个错误消失了

于 2019-01-04T20:22:42.977 回答