2013-03-13 59 views
0

如何使用java更新環境變量PATH。使用相同的代碼,當我在各自的操作系統中運行代碼時,我應該能夠更新Windows和Unix中的PATH變量。更新PATH環境變量獨立於使用JAVA的操作系統

在此先感謝。

問候, 聖

+0

看到這個問題http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java – 2013-03-13 15:03:00

回答

0

在Unix系統(C語言),您可以通過使用不同形式的「執行」命令來更改路徑,但它只能用來傳遞附加/更新變量任何會由當前程序執行。

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 
在 '外殼' 解釋(命令提示符如果你喜歡)

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

這應該保留你的路徑改變,但你永遠不會調用'myScript.sh'沒有前導點。如果你忘了它,你可以在執行後包含「/ this/file/created/by/above」。

當然,當你使用它時,你需要處理多個用戶可能的同時執行。因此,對於每次執行,「/ this/file/created/by/above」文件應該是不同的。研究可能使用「$$」參數。

Ps。 「/ path/to/my/program」可以是執行你的java代碼的JVM。

安全性:如果我是「root」用戶,我肯定不想執行您的代碼。你的程序可以將任何東西放在「/ this/file/created/by/above」文件中,並且它會被root執行。