Quando você executa seu script como ./script
, ele é executado em uma subshell, portanto, a variável está disponível apenas para essa sub-shell e filho desse shell.
$ nano a.sh # create a script ( for test put sleep 1000 in script )
$ chmod +x a.sh # make it executable
$ ./a.sh & # run it
[1] 8929 # pay attention to its pid
$ echo $$ # check your current shell id
8742
agora vamos verificar usando pstree
:
$ pstree -sp 'pgrep sleep'
bash(8742)───bash(8929)───sleep(8930)