Ale*_*lex 81 shell scripting environment-variables
如何在bash脚本中设置全局环境变量?
如果我喜欢的话
#!/bin/bash
FOO=bar
Run Code Online (Sandbox Code Playgroud)
...要么
#!/bin/bash
export FOO=bar
Run Code Online (Sandbox Code Playgroud)
... vars似乎停留在本地环境中,而我希望在脚本执行完毕后继续使用它们.
mob*_*mob 134
运行您的脚本 .
. myscript.sh
Run Code Online (Sandbox Code Playgroud)
这将在当前shell环境中运行脚本.
export 管理哪些变量可用于新流程,所以如果你说
FOO=1
export BAR=2
./runScript.sh
Run Code Online (Sandbox Code Playgroud)
然后$BAR将在环境中提供runScript.sh,但$FOO不会.
pax*_*blo 52
当您运行 shell脚本时,它在子shell中完成,因此它不会影响父shell的环境.您想通过执行以下操作来获取脚本:
. ./setfoo.sh
Run Code Online (Sandbox Code Playgroud)
这在当前 shell 的上下文中执行,而不是作为子 shell.
从bash手册页:
.filename [参数]
源文件名[参数]在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态.
如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录.
在PATH中搜索的文件不需要是可执行的.当bash不处于POSIX模式时,如果在PATH中找不到文件,则搜索当前目录.
如果关闭shopt内置命令的sourcepath选项,则不搜索PATH.
如果提供了任何参数,则在执行文件名时它们将成为位置参数.
否则,位置参数不变.返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果未找到或无法读取文件名,则返回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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134072 次 |
| 最近记录: |