当前位置:  开发笔记 > 编程语言 > 正文

shell脚本中的全局环境变量

如何解决《shell脚本中的全局环境变量》经验,为你挑选了3个好方法。

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

如果我喜欢的话

#!/bin/bash
FOO=bar

...要么

#!/bin/bash
export FOO=bar

... vars似乎停留在本地环境中,而我希望在脚本执行完毕后继续使用它们.



1> mob..:

运行您的脚本 .

. myscript.sh

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

export 管理哪些变量可用于新流程,所以如果你说

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

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


小心第一个.没有斜线,它将在你的道路上看:使用类似'的东西../myscript.sh'如果你想确保它运行一个特定的.
`source`是`.`的别名.所以你可以运行`source myscript.sh`,如果你想更明确的话.

2> paxdiablo..:

当您运行 shell脚本时,它在子shell中完成,因此它不会影响父shell的环境.您想通过执行以下操作来获取脚本:

. ./setfoo.sh

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

从bash手册页:

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

在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态.

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

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

如果关闭shopt内置命令的sourcepath选项,则不搜索PATH.

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

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


它是相同的,只是更快地键入(并且在旧系统上更兼容 - ksh没有源命令,但确实有'.').

3> CDT..:

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


我熟悉`source`.也许OP不是.
@PhillipCloud我想要更多细节,我自己.如果你想编辑答案,你绝对可以这样做.帮助事业和所有...... Thx!
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有