文件中设置的变量未反映在 shell 中

文件中设置的变量未反映在 shell 中

在文件脚本中,我有以下命令

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)

相关内容