PATH 決定 Shell 搜尋可執行檔的目錄順序。修改 PATH 需區分「臨時/永久」與「用戶級/系統級」四種組合,錯誤選擇會導致「重開機失效」或「影響其他用戶」。本文提供四種場景的標準化操作與驗證方法。

echo $PATH
# 或
env | grep PATH
export PATH=$PATH:/usr/local/bin
# 或
PATH=$PATH:/usr/local/bin
echo $PATH # 驗證已含新路徑
vim ~/.bashrc (或 ~/.bash_profile)export PATH=$PATH:/usr/local/binsource ~/.bashrcecho $PATH 仍含新路徑。注意:~/.bash_profile 僅登入 Shell 讀取,~/.bashrc 每次互動 Shell 讀取。建議寫在 ~/.bashrc,並在 ~/.bash_profile 中 source ~/.bashrc。
/etc/profile:sudo vim /etc/profileexport PATH=$PATH:/usr/local/binsource /etc/profile)生效。或建立 /etc/profile.d/custom_path.sh(模組化、不修改主檔):
echo 'export PATH=$PATH:/usr/local/bin' | sudo tee /etc/profile.d/custom_path.sh
sudo chmod +x /etc/profile.d/custom_path.sh
在 systemd 單元檔或腳本開頭直接設定:
[Service]
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=/usr/local/bin/myapp
或腳本開頭:
#!/bin/bash
export PATH=/usr/local/bin:$PATH
# 確認新路徑優先序
which mytool
# 應輸出 /usr/local/bin/mytool
# 檢查 PATH 順序
echo $PATH | tr ':' '\n' | nl
| 錯誤 | 後果 | 正確做法 |
|---|---|---|
寫 PATH=/usr/local/bin 覆蓋原值 | 系統指令 (ls, cp, systemctl) 全找不到 | 必須 PATH=$PATH:/new/path 保留原值 |
用 ~/.bash_profile 但未 source ~/.bashrc | 非登入 Shell (如 tmux、vscode 終端) 不生效 | 寫在 ~/.bashrc 並確保 ~/.bash_profile source 它 |
系統級改 /etc/environment | 非 Shell 環境 (systemd、cron) 可能不讀取 | 用 /etc/profile.d/*.sh 或 systemd Environment |
根據「誰受影響、要不要永久」選擇正確檔案與語法,PATH 修改零失誤。
Linux 設定 .NET IIS 中繼資料庫讀取權限:aspnet_regiis -i 一鍵修復
Ubuntu 笔记本屏幕亮度无法调节或不保存:Grub 参数 acpi_backlight 与 rc.local 修复
Ubuntu 系統配置 IPv4 網路參數完整教學(DHCP、靜態 IP、虛擬 IP、DNS)
Linux supportconfig 系統資訊收集工具安裝與使用完整指南:SUSE/openSUSE 官方診斷利器
Ubuntu 編譯 PARSEC 2.1 出現 pod2man 錯誤的解決方案
Ubuntu Live CD 修復 Grub 引導完整教學:解決雙系統啟動故障