On macos catalina
'''echo $VARIABLE'''
I see the value of the variable but java couldn't read the system variable.
在linux中没有问题,所以我认为这是一个zsh问题。
Java读取所有变量env
, 除了LD_LIBRARY_PATH and 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)