Bash
我應該使用 pwd 還是波浪號加號 (~+)?
兩者都
pwd
提供~+
相同的資訊,即目前目錄路徑。所以我的問題是,有一個我應該使用另一個嗎?
~+
像我想的那樣在所有系統中都受支持嗎pwd
?如果是這樣,~+
使用起來更像是一種眼睛糖果。一個使用範例是:
var=$($(pwd)/folder/another/script -v) var=$(~+/folder/another/script -v)
~+
似乎不是標準的,僅~username
定義了波浪號。例如 Dash 和 Busybox 不支持~+
. 不過, commandpwd
和 shell 變數$PWD
都是標準的,所以要麼 要麼"$(pwd)"
應該"$PWD"
工作。在大多數情況下,您只需使用 . 來引用目前目錄
.
,但如果您需要擴展完整路徑,我通常會使用"$PWD"
. 與變數相反,命令替換需要在許多 shell 中生成一個新程序,這是不必要的成本。請注意,您需要引用副檔名,以防目前目錄的路徑包含例如空格。(或者你
$IFS
包含的任何內容,加上全域字元。)雖然如果你想解析目前工作目錄中的任何符號連結,你需要使用
"$(pwd -P)"
. 兩者$PWD
和$(pwd)
都會顯示你曾經去那裡的路徑,帶有符號連結(在我嘗試過的 shell 中,沒有檢查這是否是給定的)。例如:$ mkdir /tmp/foo $ ln -s /tmp/foo /tmp/link $ cd /tmp/link $ echo "$PWD"; pwd; pwd -P /tmp/link /tmp/link /tmp/foo