【发布时间】:2017-10-11 23:39:10
【问题描述】:
对于我的应用程序,我使用 DYLD_INSERT_LIBRARIES 来切换库。我正在运行 Mac OS X,El Capitan。
如果我在我的 shell 中设置这些环境变量:
export PYTHONHOME=${HOME}/anaconda
export DYLD_INSERT_LIBRARIES=${HOME}/anaconda/lib/libpython2.7.dylib:${HOME}/anaconda/lib/libmkl_rt.dylib
如果我直接启动我的应用程序,它可以正常工作。但是,如果我通过我编写的 bash 脚本调用它,DYLD_INSERT_LIBRARIES 将被忽略。
如果我将相同的 2 行添加到我的 bash 脚本中,我的应用程序将再次运行。
在调用 bash 脚本时,DYLD_INSERT_LIBRARIES 似乎未设置,正如此测试脚本所证明的那样。
#!/bin/bash
set -e
echo ${DYLD_INSERT_LIBRARIES}
有什么方法可以让bash脚本继承并传递DYLD_INSERT_LIBRARIES?
【问题讨论】:
-
为什么不将导出添加到您的个人资料或脚本中?
-
这个脚本应该是跨平台的。
DYLD_INSERT_LIBRARIES可能应该只在启动脚本中使用我的应用程序的命令调用。现在我更好奇如何让 bash 尊重 DYLD_INSERT_LIBRARIES 和 DYLD_LIBRARY_PATH。 -
DYLD_INSERT_LIBRARIES不适用于Linux,它是LD_PRELOAD。
标签: bash macos shared-libraries