Bash

如何獲取目前工作目錄?

  • April 4, 2022

我想要一個將目前工作目錄轉換為變數的腳本。需要目錄的部分是這樣的dir = pwd。它只是列印pwd如何將目前工作目錄放入變數中?

沒有必要這樣做,它已經一個變數中:

$ echo "$PWD"
/home/terdon

PWD變數由 POSIX 定義,適用於所有 POSIX 兼容的 shell:

殘疾人士

由 shell 和 cd 實用程序設置。在 shell 中,該值應從環境中初始化,如下所示。如果 PWD 的值在執行時傳遞給環境中的 shell,該值是目前工作目錄的絕對路徑名,不超過 {PATH_MAX} 個字節,包括終止的空字節,並且該值不包含任何點或點-點的組件,則外殼應將 PWD 設置為環境中的值。否則,如果在執行時將 PWD 的值傳遞給環境中的 shell,該值是目前工作目錄的絕對路徑名,並且該值不包含任何點或點-點的組件,則它未指定 shell 將 PWD 設置為環境中的值還是將 PWD 設置為將由 pwd -P 輸出的路徑名。否則,sh 實用程序將 PWD 設置為將由 pwd -P 輸出的路徑名。在 PWD 設置為環境值的情況下,該值可以包含引用符號連結類型文件的組件。在將 PWD 設置為將由 pwd -P 輸出的路徑名的情況下,如果目前工作目錄或該目錄的任何父目錄沒有足夠的權限來確定該路徑名是什麼,則 PWD 的值為未指定。對此變數的賦值可能會被忽略。如果應用程序設置或取消設置 PWD 的值,則未指定 cd 和 pwd 實用程序的行為。在將 PWD 設置為將由 pwd -P 輸出的路徑名的情況下,如果目前工作目錄或該目錄的任何父目錄沒有足夠的權限來確定該路徑名是什麼,則 PWD 的值為未指定。對此變數的賦值可能會被忽略。如果應用程序設置或取消設置 PWD 的值,則未指定 cd 和 pwd 實用程序的行為。在將 PWD 設置為將由 pwd -P 輸出的路徑名的情況下,如果目前工作目錄或該目錄的任何父目錄沒有足夠的權限來確定該路徑名是什麼,則 PWD 的值為未指定。對此變數的賦值可能會被忽略。如果應用程序設置或取消設置 PWD 的值,則未指定 cd 和 pwd 實用程序的行為。


對於更一般的答案,將命令的輸出保存在變數中的方法是將命令括在$()or (反引號)中:

var=$(command)

或者

var=`command`

在這兩者中,$()首選是因為它更容易建構複雜的命令,例如:

command0 "$(command1 "$(command2 "$(command3)")")"

誰的反引號等效項如下所示:

command0 "`command1 \"\`command2 \\\"\\\`command3\\\`\\\"\`\"`"

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