![](/img/trans.png)
[英]Setting JAVA_HOME in .bash_profile not returning correct path
[英]$JAVA_HOME path not sourced correctly in ~/bash_profile at login
登錄我的 CentOS 7 VM 后,我的 $JAVA_HOME 始終設置為: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre
,這是不正確的。
我的 ~/.bash_profile 是這樣寫的:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.144-0.b01.el7_4.x86_64/jre
export JAVA_HOME
PYCHARM_HOME=/opt/pycharm-community-2017.2.3/
export PYCHARM_HOME
ECLIPSE_HOME=/opt/eclipse
export ECLIPSE_HOME
export SPARK_HOME=/opt/spark
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PYCHARM_HOME/bin:$ECLIPSE_HOME
export PATH
每次我打開一個新終端時,Sourcing.bash_profile 似乎都可以解決問題,但為什么我的 $JAVA_HOME 路徑在啟動時默認為舊版本並且沒有設置為在 .bash_profile 中指定的目錄?
ps
以確保您處於bash
。 bash -l
,看看它是否可以解決您的問題。 JAVA_HOME=...
之前添加set -x
以檢查是否有問題。 每次打開新終端時都要采購.bash_profile似乎可以解決此問題,但是為什么我的$ JAVA_HOME路徑在啟動時默認為舊版本,而不設置為.bash_profile中指定的目錄?
您需要從當前用戶注銷並再次登錄,以便進行環境變量更改。
可能有用
在Bash中:
/etc/profile
, ~/.bash_profile
, ~/.bash_login
, ~/.profile
。 ~/.bashrc
環境 :
使用/etc/environment
可以在整個系統范圍內(所有用戶,所有進程)永久設置所有用戶的環境變量。
/etc/environment
是系統范圍的配置文件,表示所有用戶都使用它。 它是由root擁有的,因此您需要成為admin用戶並使用sudo對其進行修改。
假設如果設置了foo="bar"
變量,那么可以從所有用戶會話訪問foo
。 首先測試變量輸出
source /etc/environment
~/.profile
是您自己用戶的個人shell初始化腳本之一。 每個用戶都有一個文件,可以編輯其文件而不會影響其他文件。
/etc/profile
和/etc/profile.d/*.sh
是全局初始化腳本,等效於每個用戶~/.profile
。 但是,全局腳本在用戶特定腳本之前執行; 並且主/etc/profile
在退出之前執行/etc/profile.d/
所有*.sh
腳本。
另請注意,
/etc/environment
文件為每個登錄用戶設置系統范圍的變量。 bash_profile
中的命令。 因此,除非至少打開一次bash shell,否則將不會設置變量。 它對我有用!
就我而言,以下原因導致了錯誤:
export JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
錯誤是=
前后有空格。 刪除這些空格后錯誤消失。
所以正確的命令如下:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.