Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 環境變數配置三大方法詳解:/etc/profile vs ~/.bashrc vs 臨時導出

編輯:Linux 教學

在 Linux 開發環境中,正確設定環境變數(如 JAVA_HOME、PATH、CLASSPATH)是專案順利編譯執行的前提。本文詳細比較三種配置方法的適用場景、優缺點、寫法差異與常見錯誤,以 JDK 設定為實例演示。

方法對照表

方法生效範圍生效時間適用場景安全性
/etc/profile所有使用者登入 Shell系統級開發環境、伺服器統一配置低(影響所有帳號)
~/.bashrc單一使用者互動式 Shell 啟動個人開發環境、多版本切換高(使用者隔離)
命令列 export當前 Shell 進程立即生效臨時測試、腳本內部、CI/CD 階段最高(進程隔離)

方法一:修改 /etc/profile(系統級)

sudo vim /etc/profile

在檔案末尾新增:

export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

生效: source /etc/profile 或重新登入。

方法二:修改 ~/.bashrc(使用者級,推薦)

vim ~/.bashrc

在檔案末尾新增:

export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意: 原文使用 set 錯誤,Bash 應使用 export 或直接 VAR=value(區域變數),export 才能導出給子進程。

生效: source ~/.bashrc 或開新終端機。

方法三:命令列直接 export(臨時)

export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

關閉終端機即失效,適合臨時測試不同 JDK 版本。

關鍵細節與避坑指南

  1. 路徑分隔符: Linux 使用冒號 :(Windows 用分號 ;)
  2. 保留原值: PATH=$JAVA_HOME/bin:$PATH 而非 PATH=$JAVA_HOME/bin,否則系統指令(ls、grep)將找不到
  3. CLASSPATH 必含當前目錄: . 代表當前目錄,否則 java MyClass 會找不到類別
  4. 大小寫敏感: JAVA_HOME ≠ java_home
  5. 變數引用: 使用 $VAR 或 ${VAR},避免硬編碼路徑

驗證配置是否生效

echo $JAVA_HOME
echo $PATH
java -version
javac -version

進階:多版本 JDK 切換技巧

# ~/.bashrc 末尾定義函數
use_jdk8()  { export JAVA_HOME=/usr/lib/jvm/java-8-openjdk; export PATH=$JAVA_HOME/bin:$PATH; }
use_jdk11() { export JAVA_HOME=/usr/lib/jvm/java-11-openjdk; export PATH=$JAVA_HOME/bin:$PATH; }
use_jdk17() { export JAVA_HOME=/usr/lib/jvm/java-17-openjdk; export PATH=$JAVA_HOME/bin:$PATH; }

終端機輸入 use_jdk11 即可瞬間切換版本。

總結建議

  • 個人開發機: 採用 ~/.bashrc,安全且靈活
  • 伺服器/容器: 採用 /etc/profile 或 Dockerfile ENV,確保服務帳號一致
  • 臨時測試/腳本: 直接 export,不汙染環境

正確管理環境變數,能避免 90% 的「找不到指令/類別/庫」經典錯誤,是 Linux 開發者的必修內功。

Copyright © Windows教程網 All Rights Reserved