我应该使用 pwd 还是波浪号加号 (~+)?

我应该使用 pwd 还是波浪号加号 (~+)?

两者pwd~+提供相同的信息,即当前目录路径。

所以我的问题是,我应该使用其中一个而不是另一个吗?~+正如我想象的那样,所有系统都支持吗pwd?如果是这样的话,~+使用起来会更加养眼。

一个使用示例是:

var=$($(pwd)/folder/another/script -v)
var=$(~+/folder/another/script -v)

答案1

~+看起来不标准,only~username和波形符单独定义。例如 Dash 和 Busybox 不支持~+.不过, commandpwd以及 shell 变量$PWD都是标准的,所以"$(pwd)"or"$PWD"应该可以工作。

在大多数情况下,您只需使用 来引用当前目录.,但如果您需要扩展完整路径,我通常会使用"$PWD".与变量相反,命令替换需要在许多 shell 中生成新进程,这是不必要的开销。

请注意,您需要引用扩展,以防当前目录的路径包含空格等。(或者你$IFS包含的任何内容,加上全局字符。)

不过,如果您想解析当前工作目录中的任何符号链接,则需要使用"$(pwd -P)".和$PWD都会$(pwd)显示您过去使用的路径,以及符号链接(在我尝试过的外壳中,没有检查这是否是给定的)。例如:

$ mkdir /tmp/foo
$ ln -s /tmp/foo /tmp/link
$ cd /tmp/link
$ echo "$PWD"; pwd; pwd -P
/tmp/link
/tmp/link
/tmp/foo

相关内容