如何使用 java 更新环境变量 PATH。使用相同的代码,当我在各自的操作系统中运行代码时,我应该能够更新 Windows 和 Unix 中的 PATH 变量。
提前致谢。
问候,桑
如何使用 java 更新环境变量 PATH。使用相同的代码,当我在各自的操作系统中运行代码时,我应该能够更新 Windows 和 Unix 中的 PATH 变量。
提前致谢。
问候,桑
在 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 执行。