Mac 寻求 Mac 大神,dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/osascript) is code signed with entitlements 是什么错误?

ibachue · 2013年12月25日 · 最后由 iBachue 回复于 2013年12月25日 · 4733 次阅读

这里 Mac 大神有木有?

想询问下 dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/osascript) is code signed with entitlements 这是个什么错误呀?

错误来自于我之前写的脚本,当程序发生异常时后台自动给我邮箱发一封邮件,这个就是邮件里的错误信息了。 我在本地从来没有发生过类似问题,所以既不知道为何会发生这个错误,也不知道如何 Reproduce,更不知道如何解决。

只能向各位 Mac 大神请教了。谢谢大神们。

呵呵,之前也碰到这个问题,好像是 sudo 的时候会出现,没研究怎么具体原因,后来升级到 10.9 就没这个错误了

#1 楼 @miraclew 貌似我 sudo 也没出问题嘛。我本地就是 10.8 的,好奇怪

你可以看看~/.profile 有没有类似 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 的内容,看看是不是这个引起的

#3 楼 @miraclew 好像这么做是可以 Reproduce 出这个错误来,不过问题是,这个变量是怎么被加进去的呢?又为何会引发 applescript 的错误呢?

我记得我那个是自己要编译运行某个东西需要,自己手动加的,你的是怎么加进去的我就不知道了,也有可能是某个安装程序加的,也许是你自己加的

DYLD 是用来控制系统 .dylib 函数查找的

  • DYLD_LIBRARY_PATH 动态链接库查找路径
  • DYLD_FALLBACK_LIBRARY_PATH 后备动态链接库查找路径
  • DYLD_INSERT_LIBRARIES 可以用来 stub 系统函数

由于安全考虑,这些环境变量在 setuid/setgid 调用后就会失效并且打印出你说的提示。你可以去掉 setuid/setgid 的调用 (sudo 就用了 setuid), 或者执行 script 之前把上面环境变量都设空。

其实还有很多 DYLD_ 打头的变量,man dyld 就知道了

#6 楼 @luikore 好吧 谢谢了 这个绝对是坑啊 以后凡是执行脚本前先把这些环境通通清空吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号