Geo*_*ge2 12 linux environment-variables redhat-enterprise-linux
我正在运行 Red Hat Linux Enterprise 5;我总是使用 export 命令来设置环境变量。
有没有其他设置环境变量的方法,它们的优点/缺点是什么?
Den*_*son 20
这是 Bash 手册页的摘录:
export [-fn] [name[=word]] ...
export -p
提供的名称被标记为自动导出到随后执行的命令的环境中。如果给出了 -f 选项,则名称指的是函数...
如果只需要当前环境中的变量,则不需要使用export。
var=value
Run Code Online (Sandbox Code Playgroud)
编辑:
不导出:仅当前环境。导出:当前环境和子环境。
这是导出对子环境中变量可用性的影响的演示,并且子环境中的更改不会影响父环境:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Run Code Online (Sandbox Code Playgroud)
第一个回波后(echo "parent..."),您看到“123”和“456”,因为双方var1并var2在当前的环境是有效的。您看不到 的值,var3因为它尚未设置。
在以 " var3=..."开头的行之后,您看不到 for 的值,var1因为它没有被导出。您确实看到了一个值,var2因为它是导出的。您会看到 的值,var3因为它仅为子环境设置。
(bash -c相当于运行带有-c选项参数内容的脚本。脚本或其他可执行文件,或者在这种情况下,参数bash -c成为当前环境的子项,结果当然是子项的父母。)
在“脚本”中,变量的值发生了变化。它现在输出这些新值。
一旦“脚本”完成,执行返回到父环境(在这种情况下是命令行)。在最后一个 echo 之后,您会看到原始值,因为在子环境中所做的更改不会影响父环境。
| 归档时间: |
|
| 查看次数: |
14673 次 |
| 最近记录: |