【发布时间】:2014-04-22 19:45:54
【问题描述】:
为什么我这样做时会得到一个数字:
echo $$
返回
489
如果我打开一个新终端,它会返回另一个数字。它似乎与终端会话的pid有关,但为什么呢?
【问题讨论】:
为什么我这样做时会得到一个数字:
echo $$
返回
489
如果我打开一个新终端,它会返回另一个数字。它似乎与终端会话的pid有关,但为什么呢?
【问题讨论】:
$$ 表示您当前的 PID。
如Bash Reference Manual - 3.4.2 Special Parameters中所见:
$
扩展为 shell 的进程 ID。在 () 子shell中,它展开 调用 shell 的进程 ID,而不是子 shell。
你可以通过ps -ef | grep 489进行测试,它会显示你登录的过程。
以我为例:
$ echo $$
3470
$ ps -ef | grep 3470
1000 3470 3469 0 10:59 pts/3 00:00:00 -bash <---- this process
1000 8151 3470 0 15:37 pts/3 00:00:00 ps -ef
1000 8152 3470 0 15:37 pts/3 00:00:00 grep --color=auto 3470
【讨论】:
因为它是这样定义的。 $$ 是一个特殊的 shell 变量(例如 $!、$_、$@、$1,...),指的是调用的 shell 的 PID。
【讨论】:
你会在这个post找到一个很好的解释。
$$ 当前shell(不是子shell)的pid
【讨论】: