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