2011-07-15 234 views
0

我爲我的glassfishv3安裝創建了一個沒有交互式shell的系統用戶,因此當通過asadmin啓動glassfish時,沒有在此用戶上設置環境變量。如何在Ubuntu中爲系統用戶設置環境變量?

我試圖在環境中複製在我的初始化腳本使用以下命令:

jhv=$(grep JAVA_HOME /etc/environment) 
$jhv 
export JAVA_HOME  
sudo -u glassfish -E $glassfishpath/asadmin start-domain domain1 

裏面的asadmin的我回聲$ JAVA_HOME其打印正確JAVA_HOME。

一旦glassfish啓動,我使用打印環境鍵值對的單一方法啓動Web服務。 JAVA_HOME不在其中。這會導致由需要JAVA_HOME的glassfish執行的腳本出現問題。

那麼如何在系統用戶/ glassfish環境中設置JAVA_HOME,以便在java容器啓動後它會一直存在?

+0

我對GF不太瞭解。 「啓動Web服務」的含義是什麼?另外,你如何打印關鍵值對? –

+0

@Ryan Stewart - glassfish是一個java web容器,可以承載java web服務。當客戶端調用容器時已知的應用程序(Web服務)將被創建或初始化。至於你的其他問題:Java有能力通過使用_System.getenv(); _返回一個環境條目映射來獲取環境變量。通過迭代條目,您可以將鍵值對添加到String中,然後從服務中返回String作爲響應。 – Setix

+0

對不起,我應該注意到我是Java開發人員,所以我知道這個領域。我只是沒有使用GF。我主要與Tomcat合作。除非GF與我用過的其他容器有很大不同,但它實際上並不會爲Web服務產生單獨的OS進程,對吧?你只是部署一個戰爭? –

回答

0

通常情況下,解決方案是將-E標誌添加到sudo命令。該標誌告訴sudo在下降到根訪問時維護當前用戶的環境變量。

看起來你已經在使用這個標誌了,所以我不知道是什麼問題。這可能是因爲你的腳本中的國旗失敗了,你沒有得到通知。您是否嘗試在shell中運行腳本的命令手冊?結果/輸出是什麼?

+0

這個問題說明,在由sudo運行的asadmin腳本中正確設置了JAVA_HOME。這意味着-E正在工作,但價值正在某處丟失。 –

相關問題