0

如何使用 java 更新环境变量 PATH。使用相同的代码,当我在各自的操作系统中运行代码时,我应该能够更新 Windows 和 Unix 中的 PATH 变量。

提前致谢。

问候,桑

4

1 回答 1

0

在 Unix(c 语言)中,您可以使用不同形式的“exec”命令更改 PATH,但它只能用于将附加/更新的变量传递给当前程序将执行的任何内容。

Unix 的原则之一是环境与您开始执行代码时的环境不同。因此,即使您的代码(java)是通过 JVM 执行的,它仍然必须遵守此规则。一旦 JVM 退出,对 PATH 的所有更新都将丢失。

在 Windows 中情况并非如此。一个程序可以改变当前的环境,这就是为什么你经常在windows平台上执行一些代码后发现自己在不同的目录中。

不幸的是,正因为如此,您将无法在 Windows 和 Unix 中执行此操作。在 Unix 中你能期望的最好的东西是这样的:

myScript.sh:

# This is a script that executes the program and then 'includes' a script
/path/to/my/program  # which writes the following file containing environment changes
. /this/file/created/by/above

在“shell”解释器中(如果您愿意,可以使用命令提示符):

# Execute my program using myScript.sh
. ./myScript.sh

这应该会保留您的路径更改,但您永远不能在没有前导点的情况下调用“myScript.sh”。如果你忘记了,你可以在执行后包含“/this/file/created/by/above”。

当然,当您使用它时,您需要处理多个用户可能同时执行的操作。所以文件“/this/file/created/by/above”对于每次执行都应该是不同的。调查“$$”参数的可能用途。

附言。“/path/to/my/program”可以是一个 JVM,它将执行你的 java 代码。

安全性:如果我是“root”用户,我绝对不想执行您的代码。您的程序可以在该文件“/this/file/created/by/above”中放入任何内容,并且它将由 root 执行。

于 2013-03-14T18:24:34.247 回答