набор переменных в файле, не отраженном в оболочке

В сценарии файла у меня есть следующие команды

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

Примечание: Существует нет #!/bin/bash в первой строке

когда я работаю ./script и echo $CIA_HOME, это не печатает вещи.

Если я делаю . ./script, это работает.

Мой вопрос состоит в том, почему он не работал в первом случае даже при том, что он не запустил подоболочку.

0
задан 26 June 2017 в 03:23

1 ответ

Когда Вы запускаете свой скрипт как ./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)
3
ответ дан 3 November 2019 в 01:10

Другие вопросы по тегам:

Похожие вопросы: