Bash

更改目錄的符號連結僅適用於主目錄

  • January 19, 2017

使用這個答案,我在我的.bashrc文件中創建了一個符號連結,以便更輕鬆地更改到常用目錄。

例如

ln -s ~/a/b/c/d/development dev

我可以通過輸入將目錄從我home的目錄更改為目錄。我也可以從我的目錄進入,這也有效。development``cd dev``ls dev``home

但是,這些命令適用於我的home目錄。如果我從其他任何地方輸入它們,我會收到一條錯誤消息告訴我No such file or directory

如果我輸入cd ~/devls ~/dev它的工作原理。

有人可以解釋為什麼會這樣以及如何解決它,這樣~/當我不在我的主目錄中時我就不必包含在路徑中。

由於您使用 Bash 作為 shell,因此可以使用CDPATHshell 變數。Bash 手冊將其描述為

搜尋路徑:在 CDPATH 中的每個目錄名都搜尋目錄,CDPATH 中的替代目錄名用冒號 (’:’) 分隔

您可以將以下行添加到您的.bashrc

CDPATH=".:$HOME"

如果您稍後鍵入cd dev,將在目前工作目錄中搜尋名為 的子目錄dev

  • 如果存在這樣的目錄,它將更改為該目錄(因為cd內置命令通常有效)。
  • 如果不是,它將搜尋您的主目錄 ( ~),找到符號連結(意識到它是指向目錄的連結)並切換到目標目錄(由 指向~/dev)。

如果您想優先考慮主目錄中的目錄,您可以在( ) 中$HOME首先列出,但我強烈建議您不要這樣做,因為它違反了最小意外原則:由此產生的行為與標準相差太大。CDPATH``"$HOME:."

引用自:https://unix.stackexchange.com/questions/338570