ubuntu終端sudo java提示“command not found”解決辦法


  我在ubuntu 12.04里想啟動一個java程序,sudo java -jar xxx.jar,但是結果提示sudo:java:command not found。  

  Ubuntu下用sudo運行java程序時,要注意此時用戶目錄為/root,而不是/home/yourname之類的。如果沒注意到這一點,就可能會遇到這樣一種情況:某個java相關的組件把某些配置默認放在/home/yourname,而你用sudo啟動的java程序卻又去/root下找這個文件,結果沒找到; 而如果相關的模塊又不報錯或者不夠高調的報錯,你就很難發現錯在哪里。

   這種情況一般是因為你的root用戶下沒有配置java的路徑,sudo的環境變量和普通用戶的環境變量不一樣。sudo的環境變量時集成的root用戶的,sudo對應的PATH變量一般是:/sbin:/usr/sbin:/bin:/usr/bin。

  可以使用sudo `which java` -jar XX.jar試試。

  另外,換一種jdk的配置方法也是可以解決這個問題的。 之前修改的/etc/profile的配置,后來改的是/etc/environment(注意在/etc/environment中不要export PATH=...,不然會出現卡在登陸界面的情況)。配置完/etc/environment后source /etc/environment,sudo java就可以執行了。

 

附注:  

  (1)/etc/environment是設置整個系統的環境,而/etc/profile是設置所有用戶的環境,前者與登陸用戶無關,后者與登陸用戶有關。系統應用程序的執行與用戶環境可以是無關的,但與系統環境時相關的,所以當你登陸時,你看到的提示信息,如日期、時間信息的顯示格式與系統環境的LANG是相關的,缺省LANG=en_US,如果系統環境LANG-zh_CN,則提示信息是中文的,否則是英文的。

  (2)登陸系統時shell讀取的順序應該是/etc/profile -> /etc/environment -> $HOME/.profile -> $HOME/.env。

  (3)如果同一個變量在用戶環境(/etc/profile)和系統環境(/etc/environment)有不同的值那應該以用戶環境為准。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM