Bash

我應該使用 pwd 還是波浪號加號 (~+)?

  • October 10, 2022

兩者都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

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