【问题标题】:Update PATH Environment variable independant of OS using JAVA [duplicate]使用 JAVA 更新独立于操作系统的 PATH 环境变量 [重复]
【发布时间】:2013-03-01 13:58:18
【问题描述】:

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

提前致谢。

问候, 圣

【问题讨论】:

标签: java windows unix environment-variables


【解决方案1】:

在 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 执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 2018-12-13
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多