在shell脚本全局环境变量(Global environment variables in a s

2019-07-19 02:25发布

如何设置一个bash脚本的全局环境变量?

如果我做的东西一样

#!/bin/bash
FOO=bar

...要么

#!/bin/bash
export FOO=bar

...的增值经销商似乎留在当地的情况,而我想利用他们的脚本执行完毕后保持。

Answer 1:

运行你的脚本.

. myscript.sh

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

export支配哪些变量将提供给新工艺,所以如果你说

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

然后$BAR将在环境runScript.sh ,但$FOO不会。



Answer 2:

当你运行一个shell脚本,它在一个子壳的完成,因此它不能影响父shell的环境。 你想边做边源脚本:

. ./setfoo.sh

这执行它在当前程序的环境,而不是作为一个壳。

从bash的手册页:

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

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

如果文件名不包含斜杠,在路径文件名用于查找包含目录文件名。

搜索的文件在PATH不必是可执行的。 当bash是不是在POSIX模式下,如果没有文件在PATH中发现的当前目录搜索。

如果源路径选项shopt内建命令被关闭,路径不搜索。

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

否则,位置参数不变。 返回状态是脚本中退出(0,如果没有执行命令)的最后一个命令的状态和错误如果文件名未找到或无法读取。



Answer 3:

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


Answer 4:

#!/bin/bash
export FOO=bar

要么

#!/bin/bash
FOO=bar
export FOO

男人的出口:

外壳应给予出口属性对应于指定的名称,并应使他们在随后执行的命令的环境变量。 如果一个变量的名称后面=字,则该变量的值应被设置成字。



Answer 5:

FOO=bar
export FOO


文章来源: Global environment variables in a shell script