2010-04-16 42 views
134

在Ubuntu中,我想我的JAVA_HOME環境變量來回切換的Java 5和6

之間我打開下面的設置JAVA_HOME環境下終端和類型變量:

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun 

而且在同一個終端窗口中,我鍵入下面的檢查環境變量已更新:

echo $JAVA_HOME 

而且我看到/usr/lib/jvm/java-1.5.0-sun這是我期待看到的。另外,我修改〜/ .profile並將JAVA_HOME環境變量設置爲/usr/lib/jvm/java-1.5.0-sun。

而現在的問題 - 當我打開一個新的終端窗口和我在鍵入檢查我的JAVA_HOME環境變量回聲$ JAVA_HOME我看到我的JAVA_HOME環境變量已恢復到Java的6.當我重啓我的機器(或者註銷並重新進入,我想)JAVA_HOME環境變量被設置爲Java 5(可能是因爲我在〜/ .profile中進行了修改)。

是否有解決方法,以便我可以更改我的JAVA_HOME環境而無需註銷並返回(並使所有新終端窗口中的環境變量)?

+28

什麼是正確的網站和重複的答案? – 2012-09-03 15:45:08

+2

偉大的問題。沒有很好的答案。 – mlissner 2013-08-22 18:56:06

+0

只有當您登錄到Ubuntu時纔會讀取〜/ .profile文件,因此如果您註銷/登錄,則會爲您運行的所有終端和任何其他應用程序設置JAVA_HOME。如果你在'〜/ .bashrc'中設置了JAVA_HOME,它只會被從終端運行的應用程序看到。 – jr0cket 2015-01-21 13:52:11

回答

189

把環境變量納入全球/etc/environment文件:

... 
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun 
... 

執行 「源的/ etc /環境」 在你想要的變量更新一次殼:

$ source /etc/environment 

檢查它是否有效:

$ echo $JAVA_HOME 
$ /usr/lib/jvm/java-1.5.0-sun 

太棒了,無需註銷。

如果要在終端中設置JAVA_HOME環境變量,請將其設置爲〜/ .bashrc文件。

+9

這些更改仍然需要重新啓動以影響通過Ubuntu UI啓動的應用程序(即,雙擊應用程序) – 2013-02-12 03:15:23

+7

這與僅在每個friggin的shell中設置變量有什麼不同? – mlissner 2013-08-22 18:48:13

+0

@mlissner是的,您需要在每個shell中運行一個命令,但該值也會永久保留在'/ etc/environment'文件中。當在每個shell中設置變量時,重啓後它會再次丟失。 – 2013-08-22 20:45:05

1

看看bash(1),你需要一個登錄shell皮卡的~/.profile,即-l選項。

30

這可能會解決你的問題: https://help.ubuntu.com/community/EnvironmentVariables

會話範圍的環境變量

爲了設置環境變量在影響特定用戶的環境的方式,一個不應該的地方命令在用戶主目錄中的特定shell腳本文件中設置它們的值,但使用:

〜/ .pam_environment - 此文件是特定意味着設置用戶的環境。它不是一個腳本文件,而是由賦值表達式組成,每行一個。

不推薦:

〜/ .profile文件 - 這可能是將環境變量賦值在最好的文件,因爲它就會自動被DISPLAYMANAGER啓動過程桌面會話期間執行,以及登錄shell時,從文本控制檯登錄。

+0

從您提供的鏈接: 「以下內容不推薦使用,但此頁面上提供的以前的解決方案(?)不適用於10.04桌面版本。.pam_environment自然不適用於發行版。」 – Calmarius 2011-10-05 07:51:21

+12

〜/ .pam_environment是一種非常棒的方式如果您認爲它處理變量,則會登錄您的登錄名我嘗試將PATH設置爲$ {PATH}:$ {HOME}/bin,但未能評估變量。 Net結果:無法登錄:(通過訪問Ctrl-Alt-1並運行「/ bin/rm〜/ .pam_environment」來修復)。要格外小心或使用次帳戶來測試設置 – 2012-04-04 03:34:07

+6

我個人不知道爲什麼他們困擾於創建環境文件,然後以與其他環境變量設置完全不同的方式工作,比如環境文件使用的簡單鍵值對是普通的BS。我們使用變量和鏈接是有原因的在環境中,它仍然有今天的優點,它簡化了管理,無論誰決定PAM在這個文件中做事的方式是最好的,最好是imbeciles,變量需要解釋。 – BillR 2012-07-26 18:59:13

13

嘗試這些步驟。

- 我們要編輯「etc \ profile」。 環境變量將被輸入到文件的底部。由於Ubuntu不支持 訪問根文件夾,因此我們將不得不在終端中使用幾個命令。步驟1:啓動終端。輸入命令:gksudo gedit /etc/profile

第2步:配置文件文本文件將打開。在頁面........... 例如底部輸入環境變量:export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH 

第三步:保存並關閉文件。檢查環境變量使用echo命令設置........ echo $PATH

9

你需要把變量定義在~/.bashrc文件。

從bash的手冊頁:

當不是登錄shell啓動的交互的shell是 ,慶典 讀取並 /etc/bash.bashrc和〜/ .bashrc中執行命令,如果 這些文件存在。

5

傳統上,如果你只是想改變變量在你的終端窗口,將其設置在.bashrc文件,它每一次新的終端採購打開。每次您打開一個新的終端時,文件不會被髮送。

見的.profile和.bashrc中的區別問題: What's the difference between .bashrc, .bash_profile, and .environment?

.bashrc應該解決您的問題。但是,由於您使用的是Ubuntu,因此這不是正確的解決方案。請參閱相關的Ubuntu幫助頁面「Session-wide environment variables」。因此,難怪.profile不適合你。我使用Ubuntu 12.04和xfce。我設置了我的.profile,即使我退出登錄也不會生效。類似體驗here。所以你可能不得不使用.pam_environment文件,完全忘記了.profile.bashrc。並注意,.pam_environment不是一個腳本文件。

1

更改後。配置文件,您需要執行該文件,以使更改生效。

[email protected]# . ~/.profile 

一旦完成,echo命令將起作用。

+0

你應該使用'〜/ .profile'而不是'./.profile'。 – 2014-02-24 23:49:54