我想運行unset DISPLAY
作爲linux終端中的命令,使用Java程序。我試過使用Runtime.getRuntime().exec("unset DISPLAY");
,但它不起作用。使用java程序在linux終端運行命令?
我能在這裏做什麼?
我想運行unset DISPLAY
作爲linux終端中的命令,使用Java程序。我試過使用Runtime.getRuntime().exec("unset DISPLAY");
,但它不起作用。使用java程序在linux終端運行命令?
我能在這裏做什麼?
這將無法正常工作,這裏的原因。環境變量是從父進程繼承的。小孩無法控制父母的環境。這裏是正在發生的事情在你的設置:
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
,然後從當前的(交互)外殼,來源是這樣的文件:
$> source no-x.sh
和現在你的主bash shell已經改變了它的環境。請注意,這是一個HACK(或者對於你所有的bash zealots - 一個特性),你不應該指望用其他任何東西(比如java)來複制這個功能。
hmm ..使用您最熟悉的語言編寫程序... – Thor