ubuntu終端sudo java提示「command not found」解決辦法

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

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

   這種狀況通常是由於你的root用戶下沒有配置java的路徑,sudo的環境變量和普通用戶的環境變量不同。sudo的環境變量時集成的root用戶的,sudo對應的PATH變量通常是:/sbin:/usr/sbin:/bin:/usr/bin。ubuntu

  能夠使用sudo `which java` -jar XX.jar試試。變量

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

 

附註:  配置

  (1)/etc/environment是設置整個系統的環境,而/etc/profile是設置全部用戶的環境,前者與登錄用戶無關,後者與登錄用戶有關。系統應用程序的執行與用戶環境能夠是無關的,但與系統環境時相關的,因此當你登錄時,你看到的提示信息,如日期、時間信息的顯示格式與系統環境的LANG是相關的,缺省LANG=en_US,若是系統環境LANG-zh_CN,則提示信息是中文的,不然是英文的。file

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

  (3)若是同一個變量在用戶環境(/etc/profile)和系統環境(/etc/environment)有不一樣的值那應該以用戶環境爲準。command

相關文章
相關標籤/搜索