gpt4 book ai didi

java - 使用 java 程序在 linux 终端中运行命令?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:52 26 4
gpt4 key购买 nike

我想使用 Java 程序在 linux 终端中将 unset DISPLAY 作为命令运行。

我尝试使用 Runtime.getRuntime().exec("unset DISPLAY");,但它不起作用。

我可以在这里做什么?

最佳答案

这行不通,原因如下。环境变量是从父进程继承的。 child 无法控制 parent 的环境。以下是您的设置中发生的情况:

 bash   ->   java   ->   unset
| | |
parent child grand-child
| | |
unaffected unaffected affected

所以实际上你的命令是有效的,但它没有达到你想要的效果。遗憾的是,Java 无法更改父环境。

您的 java 程序可以修改它自己的环境变量,并且由 java 生成的任何子级都将继承这些变量。因此,您可以让 java 为您启动一个 bash shell,然后以交互方式使用该 bash shell,但这看起来开销很大。

有关如何设置 java 的环境变量,请参阅此帖子:
How do I set environment variables from Java?

如果您愿意回避整个 java 问题,大多数人在这种情况下所做的就是获取一个特殊文件。例如,创建一个名为“no-x.sh”的文件,如下所示:

# Unset the display variable
unset DISPLAY

然后从您当前的(交互式)shell 中获取文件,如下所示:

$> source no-x.sh

现在您的主 bash shell 已经改变了它的环境。请注意,这是一个 HACK(或者对于你们所有的 bash 狂热者来说——一个功能),您永远不应该期望用其他任何东西(比如 java)来复制这个功能。

关于java - 使用 java 程序在 linux 终端中运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com