java_home&java_opts在catalina.sh中设置,但是bash/python中的“printenv”没有显示这些环境变量

vuv7lop3  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(273)

我对java和tomcat还比较陌生,我想看看是否能得到yalls的帮助来了解正在发生的事情。
我注意到在我们的tomcats catalina.sh文件中设置了以下环境变量:
export java_home=“/home/aim1111prod/jdk-11.0.7+10”
export java_opts=“-xms8192m-xmx8192m-drhino.opt.level=0-djava.awt.headless=true-dcom.aw.aim.bootstrap.file=/home/aim1111prod/conf/catalina/bootstrap.xml-dfile.encoding=utf8-djava.locale.providers=compat-duser.language=en-duser.country=us”
tomcat正在运行,但当我运行“printenv”时,这两个环境变量不会出现在“printenv”结果中。
我希望最终使用python3编写一个简单的启动/停止/重启脚本。
我假设,因为“printenv”没有显示catalina.sh中的2组java选项,所以os.environ.get()也不会工作。
我注意到,当使用“printenv”时,java_home=/usr/lib/jvm/jre
我想我需要一些帮助来理解这两个环境变量的使用方式?
如果“printenv”没有接收到catalina.sh中设置的2个环境变量,我将如何使用python引用它们?
请对我放松点,哈哈,我没有你们中的一些人聪明,但我正在努力!
谢谢你的帮助/时间/建议。
--猛击大脑

5anewei6

5anewei61#

听起来您希望catalina.sh设置这些环境变量,并使更改在系统范围内生效。但是环境变量不是这样工作的; export 更改当前进程和任何子进程的环境。它不会影响系统上的任何父进程或无关进程。
一种解决方案是编写一个 Package 器shell脚本,该脚本源于catalina.sh(用于在运行 Package 器脚本的进程中设置环境变量),然后调用python。python程序将能够看到正确的环境变量集。注意:您必须使用如下命令 source catalina.sh. catalina.sh 在当前进程中运行catalina.sh中的命令。如果你只是执行 catalina.sh 作为一个独立的命令,它将在一个新进程中运行,在那里设置变量,然后退出该进程,而不将变量传播回父进程(即 Package 器脚本)。

相关问题