全局环境variables在一个shell脚本中

如何在bash脚本中设置全局环境variables?

如果我做的东西像

#!/bin/bash FOO=bar 

…要么

 #!/bin/bash export FOO=bar 

…变数似乎留在本地的情况下,而我想在脚本执行完成后继续使用它们。

用你的脚本运行.

 . myscript.sh 

这将在当前shell环境中运行脚本。

exportpipe理哪些variables将可用于新的进程,所以如果你说

 FOO=1 export BAR=2 ./runScript.sh 

那么$BAR将在runScript.sh的环境中可用,但$FOO不会。

当你运行一个shell脚本时,它在一个子shell中完成,所以它不会影响父shell的环境。 您想通过执行以下脚本来源:

 . ./setfoo.sh 

这在当前 shell的上下文中执行,而不是作为 shell。

从bash手册页:

文件名[参数]
源文件名[参数]

在当前shell环境中从文件名读取和执行命令,并返回从文件名执行的最后一个命令的退出状态。

如果文件名不包含斜杠,则使用PATH中的文件名来查找包含文件名的目录。

在PATH中search的文件不需要是可执行的。 当bash不处于POSIX模式时,如果在PATH中找不到文件,则search当前目录。

如果closuresshopt内build命令的sourcepath选项,则不会searchPATH。

如果提供了任何参数,则在执行文件名时它们将成为位置参数。

否则,位置参数不变。 返回状态是脚本中最后一条命令的状态(如果没有执行命令,则为0),如果文件名未find或无法读取,则返回false。

source myscript.sh也是可行的。

linux命令source描述:

 source is a Unix command that evaluates the file following the command, as a list of commands, executed in the current context 
 #!/bin/bash export FOO=bar 

要么

 #!/bin/bash FOO=bar export FOO 

男子出口:

shell应该将export属性赋予与指定名称对应的variables,这会导致它们处于后续执行的命令的环境中。 如果一个variables的名字后面跟着= word,那么这个variables的值应该被设置为word。

 FOO=bar export FOO