java - 如何在 macos 上设置 LD_LIBRARY_PATH/DYLD_LIBRARY_PATH

标签 java macos environment-variables zsh

在 macos catalina 上
'''echo $VARIABLE'''


我看到了变量的值,但 java 无法读取系统变量。
enter image description here

在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

关于java - 如何在 macos 上设置 LD_LIBRARY_PATH/DYLD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60126159/

相关文章:

cocoa - NSNumberFormatter 不允许输入十进制数字

c++ - 为什么mac不需要包含智能指针?

java - 如何从 java 中使用 Crossover 启动命令行应用程序?

maven - 如何在 Maven 中识别和设置缺少的环境属性?

java - 返回随机字符串键的整数值

java - 如果您只是设置和获取值,使用 AtomicLong 有什么优势吗?

JavaFX Controller 未在根元素中定义

Java - 制作对象时,它们应该放在代码的什么位置

linux - 在 CentOS Box 上正确指定 JAVA_HOME

linux - kubectl 没有显示环境变量