What is '$$' in the bash shell?

bash, linux, shell

Solution

It's the process id of the bash process itself.

You might use it to track your process over its life - use `ps -p` to see if it's still running, send it a signal using `kill` (to pause the process for example), change its priority with `renice`, and so on.

Process ids are often written to log files, especially when multiple instances of a script run at once, to help track performance or diagnose problems.

Here's the bash documentation outlining special parameters.

`BASHPID`, mentioned by ghostdog74, was added at version 4.0. Here's an example from Mendel Cooper's Advanced Bash-Scripting Guide that shows the difference between `$$` and `$BASHPID`:

#!/bin/bash4

echo "\$\$ outside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL outside of subshell = $BASH_SUBSHELL" # 0
echo "\$BASHPID outside of subshell = $BASHPID" # 9602
echo

( echo "\$\$ inside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL" # 1
echo "\$BASHPID inside of subshell = $BASHPID" ) # 9603
# Note that $$ returns PID of parent process.

Problem

I'm beginner at bash shell programming. Can you tell me about '$$' symbols in the bash shell? If I try the following ``` #> echo $$ ``` it prints ``` #>18756 ``` Can you tell me what this symbol is used for and when?

Original source