为什么 echo 命令返回这种结果?

Why is the echo command returning this kind of result?

今天回显一个环境变量打错了,结果出乎意料。环境变量包含一个简单的路径。

$ export TEST_ENV_VAR=/path/to/some/project
$ echo $TEST_ENV_VAR
/path/to/some/project

我的错字是两个 $$ 而不是一个。在这种情况下,我希望 echo 到 return 类似 $/path/to/some/project 的东西。

$ echo $$TEST_ENV_VAR
11513TEST_ENV_VAR

为什么 echo return 这种结果?

好像是$$ returns当前进程的pid

因此显示的输出是附加了 TEST_ENV_VAR 的 pid。

$$ 被认为是特殊字符。

($$) Expands to the process ID of the shell. In a () subshell, it expands to the process ID of the invoking shell, not the subshell.

如您所见,它 returns 是一个 PID。此 PID 是您当前使用的 shell。如果你使用命令 ps aux | grep $$ 你会看到这样的东西:

1997 1 1997 19804 cons0 3293653 14:15:20 /usr/bin/bash

这意味着在我的例子中,我将 bash 用作 shell。

Source