為什麼 pwd 不接受像 --physical 這樣的長選項?

為什麼 pwd 不接受像 --physical 這樣的長選項?

當我顯示命令手冊時,它說支援pwd長選項--physical

$ man pwd
PWD(1)                           User Commands                          PWD(1)

NAME
       pwd - print name of current/working directory

SYNOPSIS
       pwd [OPTION]...

DESCRIPTION
       Print the full filename of the current working directory.

       -L, --logical
              use PWD from environment, even if it contains symlinks

       -P, --physical
              avoid all symlinks

但是,當我輸入以下內容時,它失敗了

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]

為什麼多頭期權對我不起作用?

我使用的是 RHEL 6.4。沒有配置 pwd 的別名。看起來這是標準的 pwd:

$ which pwd
/bin/pwd

答案1

bash有一個內建命令,您只需在 shell 中pwd鍵入即可使用該命令。pwd

若要取得線上pwd說明頁中所述的內容,您需要強制使用外部命令。您可以透過指定可執行檔的完整路徑(/bin/pwd在您的情況下)或透過env在行之前新增來完成此操作:env pwd,該行啟動env可用於向環境新增設定的命令(但此處未完成),然後env啟動指定的命令。由於env沒有內置,因此執行pwd“真實” 。/bin/pwd

bash內建指令的優點pwdbash追蹤目前目錄,因此取得值的成本為零,而外部指令需要在檔案系統中搜尋以確定路徑,這需要更多的 IO 密集程度。

答案2

該手冊頁文檔/bin/pwd,但是當您執行時,pwd您正在使用內建的 shell;查看輸出

type pwd

您的 shell 內建的功能pwd不支援長選項(請參閱您的 shell 文件;由於您使用的是 Bash,help pwd因此將提供摘要)。

相關內容