我已經安裝了java的Ubuntu 10.10。我能夠從任何文件夾執行java命令。我認爲可能是因爲我設置了Java Classpath。但是JAVA_HOME和CLASSPATH都沒有設置。關於ubuntu中的java和環境變量的簡單問題
如果我看看/ etc/environment內容,我可以看到PATH被設置爲/ usr/bin /(等等)。由於'which java
'返回/ usr/bin/java,這就是我可以從任何地方執行java的原因嗎?如果沒有,爲什麼呢?
我已經安裝了java的Ubuntu 10.10。我能夠從任何文件夾執行java命令。我認爲可能是因爲我設置了Java Classpath。但是JAVA_HOME和CLASSPATH都沒有設置。關於ubuntu中的java和環境變量的簡單問題
如果我看看/ etc/environment內容,我可以看到PATH被設置爲/ usr/bin /(等等)。由於'which java
'返回/ usr/bin/java,這就是我可以從任何地方執行java的原因嗎?如果沒有,爲什麼呢?
您可以執行java,因爲該命令在您的路徑上。
echo $PATH
將向您顯示搜索哪些目錄,以查找特定程序的順序。由於/usr/bin
在你的路上,所以當你輸入java
時,它最終會看到/usr/bin/java
。請注意,在許多系統中,這是一個符號鏈接(指向另一個文件的文件),因此/usr/bin/java
通常指向/etc/alternatives/java
(它也是指向真實可執行文件的符號鏈接)。
環境變量JAVA_HOME
開始起作用的工具和程序檢查JAVA_HOME
並採取行動,而不是依靠路徑。在大多數現代Linux系統中,替代子系統所做的工作取代了早期(更成問題)的技術。也就是說,你可能想要設置JAVA_HOME
,如果你遇到需要它的工具。
爲什麼JAVA_HOME
不像它可能會那麼受歡迎的一個原因是要訪問JAVA_HOME
需要運行一個shell,而不是每個人都想在shell命令中包裝每個Java項目。
所以答案是YES,謝謝! ! – de3
@ de3,是的,答案是肯定的。抱歉忘記解釋中的明顯答案。 –
是的,如果java二進制文件(或其鏈接)位於路徑上列出的文件夾中,則可以在不指定路徑的情況下執行java(例如/usr/local/java/latest/bin/java -jar x.jar
) JAVA_HOME和CLASSPATH無關與系統路徑。 JAVA_HOME允許其他軟件(或腳本)知道在哪裏查找Java安裝。 CLASSPATH告訴java在哪裏尋找類(編譯.java文件產生的.class文件)。
這可能更適合於[Unix.StackExchange](http://unix.stackexchange.com/)或[Ask Ubuntu](http://askubuntu.com/) –