全局环境variables在一个shell脚本中
如何在bash脚本中设置全局环境variables?
如果我做的东西像
#!/bin/bash FOO=bar
…要么
#!/bin/bash export FOO=bar
…变数似乎留在本地的情况下,而我想在脚本执行完成后继续使用它们。
用你的脚本运行.
. myscript.sh
这将在当前shell环境中运行脚本。
export
pipe理哪些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