variáveis definidas em um arquivo não refletido no shell

0

Em um script de arquivo, tenho os seguintes comandos

export CIA_HOME=$PWD
export PYTHONPATH=$PWD/cia_modules:/opt/autotest/data/scripts

Nota: não há #!/bin/bash na primeira linha

quando executo ./script e o que faço echo $CIA_HOME , não imprime nada.

Se eu fizer . ./script , funciona.

A minha pergunta é por que não funcionou no primeiro caso, mesmo que não tenha sido lançado um subshell.

    
por Pushparaj 26.06.2017 / 12:22

1 resposta

3

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)
    
por Ravexina 26.06.2017 / 12:25