假设我有这个脚本:
export.bash:
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
当我执行脚本并尝试访问 $VAR
时,我没有得到任何值!
echo $VAR
有没有办法通过只执行 export.bash 而无需获取它来访问 $VAR
?
最佳答案
Is there any way to access to the
$VAR
by just executingexport.bash
without sourcing it ?
快速回答:不。
但是有几种可能的解决方法。
您已经提到的最明显的方法是使用 source
或 .
在调用 shell 的上下文中执行脚本:
$ cat set-vars1.sh
export FOO=BAR
$ . set-vars1.sh
$ echo $FOO
BAR
另一种方法是让脚本打印将设置环境变量的命令,而不是设置环境变量:
$ cat set-vars2.sh
#!/bin/bash
echo export FOO=BAR
$ eval "$(./set-vars2.sh)"
$ echo "$FOO"
BAR
第三种方法是使用脚本在内部设置环境变量,然后使用该环境调用指定的命令:
$ cat set-vars3.sh
#!/bin/bash
export FOO=BAR
exec "$@"
$ ./set-vars3.sh printenv | grep FOO
FOO=BAR
最后一种方法可能非常有用,尽管它不便于交互式使用,因为它不会为您提供当前 shell 中的设置(以及您建立的所有其他设置和历史记录)。
关于bash - 我可以在不获取变量的情况下将变量从 Bash 脚本导出到环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618071/