在文件脚本中,我有以下命令
export CIA_HOME=$PWD
export PYTHONPATH=$PWD/cia_modules:/opt/autotest/data/scripts
#!/bin/bash
注意:第一行没有
当我运行./script
并执行 时echo $CIA_HOME
,它不会打印任何内容。
如果我这么做. ./script
,它就有效。
我的问题是为什么在第一种情况下它不起作用,即使它没有启动子 shell。
答案1
当您运行脚本时,就像./script
它将在子 shell 中运行时一样,因此该变量仅对该子 shell 及其子 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
现在让我们使用以下命令进行检查pstree
:
$ pstree -sp `pgrep sleep`
bash(8742)───bash(8929)───sleep(8930)