项目中用shell脚本启动了一个java daemon, 本想着在java代码中可以使用profile中定义的变量:CONF_DIR,却得到了个空。
挺奇怪,模糊记得父子进程间环境变量是继承的啊,按照这个逻辑:
linux profile —> shell —> java daemon 是父子的关系,profile中有的环境变量应该一层一层被传递到java daemon啊?
稍微查了下,发现认识上有问题,记录于下:
- 环境变量是可以继承的,但是不能隔代继承,就是说子进程只能继承父进程的环境变量。
- 什么是环境变量, local变量被export之后才是环境变量。 其实用另外一个角度理解:export的作用就是让local变量变得对子进程可见。
回到我的问题,要做的仅仅是在shell中,在启动java daemon之前执行
export ${CONF_DIR}