Shell Daily 2025-12-26: 目錄瞬移 (CDPATH)

作為開發者,你的鍵盤敲擊次數裏,可能有 30% 都浪費在了 cd 命令上。每天重複輸入 cd ~/workspace/backend/src/utils 這種長路徑,即使有 Tab 補全也令人煩躁。

別再當“路徑搬運工”了。就像 PATH 變量用來幫 Shell 查找可執行程序一樣,Shell 裏還有一個鮮為人知的變量 CDPATH,專門用來查找目錄

怎麼用

設置一個由冒號分隔的目錄列表。當你執行 cd foo 時,如果當前目錄下沒有 foo,Shell 就會去 CDPATH 定義的列表裏依次查找。

  • 語法export CDPATH=".:~:~/projects:/var/log"
  • 注意:務必把 . (當前目錄) 放在最前面,否則你可能無法進入當前目錄下的子文件夾,導致混亂。
  • 兼容性POSIX 通用標準。Bash, Zsh, Sh 均支持。

適用場景

  • 項目跳轉:無論身在何處,直接 cd my-project 跳進項目根目錄。
  • 運維排查:快速跳轉到常用的日誌目錄或配置目錄,無需記憶絕對路徑。

示例:構建你的“傳送門”

將以下內容加入 .bashrc.zshrc

# 定義查找順序:
# 1. 當前目錄 (.)
# 2. 用户主目錄 (~)
# 3. 公司項目總目錄 (~/work/src)
# 4. 系統日誌目錄 (/var/log)
export CDPATH=".:~:~/work/src:/var/log"

實戰效果

配置生效後,假設你在 /tmp 目錄下,想去查看 Nginx 日誌:

# 哪怕你在 /tmp,且 /tmp 下沒有 nginx 目錄
# Shell 會自動發現 /var/log/nginx 並跳過去
$ cd nginx
/var/log/nginx

(注:不僅省去了輸入 /var/log/ 的麻煩,Zsh 用户配合 auto_cd 特性,甚至連 cd 都不用敲,直接輸入 nginx 即可瞬移。)