В сценарии файла у меня есть следующие команды
export CIA_HOME=$PWD
export PYTHONPATH=$PWD/cia_modules:/opt/autotest/data/scripts
Примечание: Существует нет #!/bin/bash
в первой строке
когда я работаю ./script
и echo $CIA_HOME
, это не печатает вещи.
Если я делаю . ./script
, это работает.
Мой вопрос состоит в том, почему он не работал в первом случае даже при том, что он не запустил подоболочку.
Когда Вы запускаете свой скрипт как ./script
это собирается работать в подоболочке, таким образом, переменная только доступна той подоболочке и ребенку той оболочки.
$ 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
теперь давайте проверим его использование pstree
:
$ pstree -sp `pgrep sleep`
bash(8742)───bash(8929)───sleep(8930)