我有一个 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
这将显示程序可用的所有环境变量。