Bash
更改目錄的符號連結僅適用於主目錄
使用這個答案,我在我的
.bashrc
文件中創建了一個符號連結,以便更輕鬆地更改到常用目錄。例如
ln -s ~/a/b/c/d/development dev
我可以通過輸入將目錄從我
home
的目錄更改為目錄。我也可以從我的目錄進入,這也有效。development``cd dev``ls dev``home
但是,這些命令僅適用於我的
home
目錄。如果我從其他任何地方輸入它們,我會收到一條錯誤消息告訴我No such file or directory
。如果我輸入
cd ~/dev
或ls ~/dev
它的工作原理。有人可以解釋為什麼會這樣以及如何解決它,這樣
~/
當我不在我的主目錄中時我就不必包含在路徑中。
由於您使用 Bash 作為 shell,因此可以使用
CDPATH
shell 變數。Bash 手冊將其描述為搜尋路徑:在 CDPATH 中的每個目錄名都搜尋目錄,CDPATH 中的替代目錄名用冒號 (’:’) 分隔
您可以將以下行添加到您的
.bashrc
:CDPATH=".:$HOME"
如果您稍後鍵入
cd dev
,將在目前工作目錄中搜尋名為 的子目錄dev
:
- 如果存在這樣的目錄,它將更改為該目錄(因為
cd
內置命令通常有效)。- 如果不是,它將搜尋您的主目錄 (
~
),找到符號連結(意識到它是指向目錄的連結)並切換到目標目錄(由 指向~/dev
)。如果您想優先考慮主目錄中的目錄,您可以在( ) 中
$HOME
首先列出,但我強烈建議您不要這樣做,因為它違反了最小意外原則:由此產生的行為與標準相差太大。CDPATH``"$HOME:."