Environment-Variables

什麼是 $PWD?(與目前工作目錄相比)

  • May 15, 2021

所以維基百科(連結)告訴我該命令pwd是“列印工作目錄”的縮寫,這是有道理的。

但是對於環境變數,“P”必須是 print 以外的首字母縮寫詞。

我聽到人們在談論“目前工作目錄”,這聽起來更好,更直覺,但似乎仍然呼叫了環境變數 $ PWD, and not $ 順時針。沒有人說過“你檢查了列印工作目錄變數嗎?”。

我目前正在使用 Web 應用程序伺服器 uWSGI,執行時它告訴我(在 uWSGI 統計頁面上):

"cwd":"/home/velle/greendrinks",

所以他們顯然喜歡(更直覺的首字母縮寫詞)cwdover pwd

我想我想弄清楚我是否誤解了某些東西,或者只是給環境變數一個不直覺的名稱?

這取決於你在做什麼。首先,$PWD它是一個環境變數,pwd是一個內置的 shell 或一個實際的二進製文件:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

$PWD現在,除非您使用該-P標誌,否則內置的 bash 將簡單地列印目前值。如中所述help pwd

pwd: pwd [-LP]

列印目前工作目錄的名稱。

選項:

-L``$PWD 如果它命名目前工作目錄,則列印它的值 -P列印物理目錄,沒有任何符號連結 預設情況下,“pwd”的行為就像指定了“-L”一樣。

pwd另一方面,二進製文件通過系統呼叫獲取目前目錄,該系統getcwd(3)呼叫返回與readlink -f /proc/self/cwd. 為了說明,嘗試進入一個連結到另一個目錄的目錄:

$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun  4 11:22 foo
lrwxrwxrwx 1 terdon terdon    4 Jun  4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo

因此,總而言之,在 GNU 系統(例如 Ubuntu)上,pwd除非echo $PWD您使用該-P選項,否則它們是等價的,但/bin/pwd不同且行為類似於pwd -P.

來源 https://askubuntu.com/a/476633/291937

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