bash - 我可以在不获取变量的情况下将变量从 Bash 脚本导出到环境吗?

标签 bash shell unix environment-variables

假设我有这个脚本:

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 executing export.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/

相关文章:

bash - Bash 中的 Echo 换行符打印文字\n

linux - 复制文件权限,但不复制文件

shell - Tcl shell : execute multiple background scripts and wait for completion

linux - 程序的作业感知 shell 与作业不感知 shell 执行

python - Flask - 避免将完整的用户名和密码放入配置中

html - 在shell脚本中创建html文件

python - 在 python 中捕获致命的 bash/git

xml - 通过 xmlstarlet 中的文本值选择节点

linux - 令人困惑的 shell 语法

shell - 删除文件名中的数字