java - 如何在 macos 上设置 LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
问题描述
在 macos catalina '''echo $VARIABLE'''
在linux中没有问题,所以我认为这是一个zsh问题。
Java 读取所有变量env
,除了LD_LIBRARY_PATH和DYLD_LIBRARY_PATH
解决方案
如果启用了系统完整性保护 (SIP),变量 LD_LIBRARY_PATH / DYLD_LIBRARY_PATH 不会传递到 macOS 上的子进程环境。
确认 :
#!/bin/zsh
cat << EOF > EnvDemo.java
public class EnvDemo {
public static void main(String[] args) throws Exception {
System.out.println(System.getenv("LD_LIBRARY_PATH"));
System.out.println(System.getenv("DYLD_LIBRARY_PATH"));
System.out.println(System.getenv("PATH"));
System.out.println(System.getenv("CUSTOM_FLAG"));
}
}
EOF
javac EnvDemo.java
export LD_LIBRARY_PATH=/usr/local/library
export DYLD_LIBRARY_PATH=/usr/local/library
export CUSTOM_FLAG=custom_flag
java EnvDemo
# null
# null
# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/oracle-19-5
# custom_flag
echo "env | grep LD_LIBRARY_PATH"
env | grep LD_LIBRARY_PATH
# No output here
echo "env | grep DYLD_LIBRARY_PATH"
env | grep DYLD_LIBRARY_PATH
# No output here
推荐阅读
- postgresql - 使用卷挂载时找不到 postgresql.conf
- laravel - vuejs + laravel中的权限导航?
- oracle11g - ORA-00936: ALTER 表 table_name 修改时缺少表达式错误 (column_name DEFAULT on null column_name.nextval)
- .net-core - 检查使用 Task.Run 调用的线程的状态
- javascript - 您如何解决正文内容与使用 HTML、CSS 和 JavaScript 创建的响应式导航栏重叠的问题?
- c++ - 变量在某处打印但不在其他地方打印?
- qt - 如何将 QML 小部件提升到顶部?
- xamarin - Xamarin 条目在删除最后一个字符时不会引发绑定项目属性的设置器
- docker - 在 macbook 上使用 docker 安装 sql server 时出错
- android - Android 用 Livedata 和 ViewModel 替换 Greenrobot 事件机制