是否有一個可接受的名稱來引用 ~/ 路徑?

是否有一個可接受的名稱來引用 ~/ 路徑?

是否有一個可接受的名稱來引用主目錄 ~/ 路徑?

在尋找答案時,我發現了使用各種術語的帖子:

  • ~/文法
  • 〜/路徑
  • 〜/擴展路徑
  • 〜/符號

但我找不到一致使用和方便的術語來表示 ~/ 語法路徑,並且可以用來將它們與完整的絕對路徑或相對路徑區分開。

請注意,我知道 ~/ 路徑是絕對路徑,因為 shell 擴展了它們 - 這是引用我所追求的它們的便捷方法。

答案1

~/只是幾個神奇的“之一”波形符擴充」。波形符擴展與 UNIX shell 特別相關。與$HOME波形符擴展不同的是,波形符擴展並沒有被普遍理解,並且可以隨shell 的不同而變化。唯一的共同點是遵守POSIX 標準(大部分),根據Wikipedia,POSIX shell 標準是基於 Korn Shell 的“嚴格子集”,Bourne Shell 的衍生版本,Bourne shell 的後代主要包括 bash 和 zsh。這是 POSIX 關於波浪線擴展的說法:

「波形符前綴」由單字開頭的未加引號的字符組成,後面跟著單字中第一個未加引號之前的所有字符,或者如果沒有 則為單字中的所有字符。在賦值中(請參閱 XBD 變數賦值),可以使用多個波形符號前綴:在單字的開頭(即,在賦值的 後面)、在任何未加引號的 後面,或兩者兼而有之。賦值中的波形符號前綴以第一個不帶引號的 或 結尾。如果波浪號前綴中的任何字元均未加引號,則波浪號前綴中跟隨的字元將被視為來自使用者資料庫的可能登錄名。可移植登入名稱不能包含 XBD 其他環境變數中 LOGNAME 環境變數描述中給出的字元集之外的字元。如果登入名為空(即波浪號前綴僅包含波浪號),則波浪號前綴將替換為變數 HOME 的值。如果未設定 HOME,則結果未指定。否則,波形符前綴應替換為與使用 getpwnam() 函數取得的登入名稱相關聯的初始工作目錄的路徑名,如 POSIX.1-2008 的系統介面磁碟區中所定義。如果系統無法辨識登入名,則結果不確定。

由波形符擴展產生的路徑名應被視為帶引號,以防止它被字段分割和路徑名擴展更改。

基本上這意味著~給出 $HOME 和~foo/指向初始工作目錄用戶 foo.粗略但不總是指 foo 的主目錄。 (我能想到的唯一例外是root)

在 BaSH 中,他們不遵守波浪號擴展的標準有幾種方法,沒有什麼特別重要的。 BaSH 還有其他有趣的波浪線擴展,關聯評論者@phk 提供。你可以把它們全部收集起來!


但我離題了。如果我們談論 ~/ 的名稱,我不確定您是否指的是路徑本身(形式 )的術語,還是指用於製作所述路徑~/x/y/z的現象and似乎指的是前者,而and指的是後者。我可能過於複雜化了,但語言是一個變化無常的東西。例如,強調以 開頭的路徑的形式,同時強調正在執行的功能以建立該形式的路徑。~/~/ paths~/ expanded paths~/ syntax~/ notation~/ paths~/~/ extended paths~/

不管怎樣,現在你可能已經意識到了

沒有公認的名字

因為所有這些術語都在流通,而且據我們從當權者那裡得知,這個問題還沒有得到官方關注。或者換句話說,所有這些術語都是描述相同事物的方式,而不是競爭標籤。它們沒有正式的名字,但任何懂一點 bash 的人都會立即明白它們的意思——如果人們明白你在說什麼,誰在乎你叫它什麼?您可以自己決定您喜歡哪個術語。我個人喜歡~/ paths,發音“波形符斜杠路徑”。並參考現象“波形符號斜線路徑簡寫”。說實話,我甚至認為他們不需要名字...

相關內容