环境变量已设置但无法在服务器上访问

环境变量已设置但无法在服务器上访问

我有一个 Java 程序,它通过设置为环境变量的路径访问一些属性文件以便工作。我使用导出命令设置路径。作为jar可执行文件的 Java 文件位于其他用户下,因此我使用该sudo选项来运行该jar文件。

我的问题是,当我在测试服务器上设置环境变量时,程序运行良好,但是,当我在生产服务器上进行相同的配置设置并尝试运行它时,它显示为环境变量设置的路径为空。

我知道这与访问或不同的服务器配置有关,但由于我是 UNIX 新手,我不确定从哪里开始调查。

有人可以帮忙吗?

答案1

环境变量对于用户可以在 ~/.profile 中设置,但是由于您以 root 身份运行某些命令,因此除非您也更改根 .profile 文件,否则这将不起作用。

另一个选择是更改文件 /etc/profile 以添加路径,这对所有用户都有效。

答案2

检查环境变量的地方

/etc/environment
/etc/profile
~/.profile
~/.bashrc

如果您以 userA 身份导出变量,然后使用 sudo 启动 jar,则该变量不会被复制到 userA 的环境中。

一个快速的解决方法是运行以下命令:

PATH=$PATH:/your/directory asdf.jar

这将仅为您的 jar 文件的此次调用设置 PATH。

您还可以通过获取程序的 pid 并运行来验证该程序的环境cat /proc/<pid>/environ

这将显示程序可用的所有环境变量。

相关内容