sudo的烦人消息可以从Mountain Lion 10.8.0中删除吗?


11

升级到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但没有收到此消息。所以我想我已经安装了一些自定义库...但是我不知道如何调试它。

Answers:


6

您还设置了其他DYLD_变量吗?set不带参数运行以查看所有变量并取消设置该前缀附带的所有内容。

请注意,这看起来实际上只是错误的解决方法,除非您启用了DYLD_PRINT_WARNINGS,否则不应打印这些消息。

此外,更新为10.8.1似乎已解决了此烦恼。


1
据我所知,ML错误。这些DYLD_变量可能很重要,将其删除可能会破坏设置的内容。
gabedwrds 2012年

2
嗯,这个错误是除非设置环境变量DYLD_PRINT_WARNINGS,否则您不应该看到这些消息,但是由于某些原因,Mountain Lion会以两种方式打印它们。
gabedwrds 2012年

2
10.8.1不能解决问题
Matteo

2
取消所有DYLD_环境变量不是解决方案,因为它们存在是有原因的。这是一个错误,在Apple修复之前,我们一直坚持下去。
Matteo

2
我在10.8.3上
遇到了

3

在zsh中:

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

这产生了一个子外壳,其中未设置sudo抱怨的环境变量,然后执行sudo。

相对于其他一些答案的优势包括:

  • 请勿从交互式外壳程序环境中删除LD_LIBRARY_PATH和DYLD_LIBRARY_PATH(对于需要它的非sudo命令)。
  • 子外壳程序的使用可确保,如果在运行sudo时(例如,使用Ctrl-C中断),您的LD_LIBRARY_PATH和DYLD_LIBRARY_PATH将在主外壳程序中保持不变(与另一个答案中的脚本不同,该脚本会在交互式外壳程序中进行设置或取消设置) )。
  • exec的使用可确保在调用sudo时原本不需要的父shell会立即退出,因此在运行该命令时不会有多余的进程挂起。

我将其保留为读者练习移植到bash等的练习。


“我会将其留给读者练习,以移植到bash等。” 因为大多数Apple用户在预安装的Bash(讽刺)上使用ZSH。
乔纳森·杜马因

2

由yokyoh1987在Apple支持论坛上找到的解决方法,

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

在您的.profile / .bashrc / .bash_profile中(取决于您的终端设置):

#为我的普通程序设置DYLD_ *
DYLD_LIBRARY_PATH ='..'

#设置备用sudo
thesudo()
{
#备份DYLD_ *变量
本地BACK = $ DYLD_LIBRARY_PATH

#取消DYLD_ *
未设置DYLD_LIBRARY_PATH

#调用sudo
/ usr / bin / sudo“ $ @”

#在sudo完成后还原DYLD_ *
导出DYLD_LIBRARY_PATH = $ BACK
}

#重定向sudo
别名sudo = thesudo

这是一个聪明的小环境管理。
bmike

该解决方案的一个问题是,如果您中断sudo(例如,通过ctrl-c),则DYLD_LIBRARY_PATH变量将在交互式shell中静默保持未设置状态,因为最后的还原操作将不会执行。使用子shell(请参阅我对这个问题的其他答案)可以解决此问题。
Pinko 2013年

-3

您可能已设置了LD_LIBRARY_PATH。


2
如发帖人所写,他/她已经unset LD_LIBRARY_PATH,并且问题仍然存在。
myhd 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.