我有一个脚本,其中包含一些需要设置为环境变量的变量
变量列表不断变化,在我的最后修改它不是一个选择.知道我该怎么做吗?
示例文件foo.sh
FOO="FOOFOO"
BAR="BARBAR"
Run Code Online (Sandbox Code Playgroud)
Wil*_*ell 41
变量和环境变量之间存在差异.如果执行. foo.sh并foo.sh包含该行FOO=value,则将FOO在当前进程中分配该变量.它不是环境变量.要成为环境变量(因此可用于子shell),必须将其导出.但是,shell提供了一个选项,使所有变量赋值都将变量提升为环境变量,因此如果您只是这样做:
set -a
. foo.sh
set +a
Run Code Online (Sandbox Code Playgroud)
那么foo.sh中的所有变量赋值都将在当前进程中成为环境变量.请注意,这并非严格正确:在bash中,导出变量使其成为当前shell中的环境变量,但在其他shell(例如,破折号)中,导出变量不会使其成为当前shell中的环境变量.(但它确实会将它设置在子shell的环境中.)但是,在shell的上下文中,如果变量是当前进程中的环境变量并不重要.如果它被导出(因此在任何子进程的环境中设置),则不在环境中的变量在功能上等同于环境变量.
che*_*ner 10
你在寻找'.' 命令(也拼写为'source' bash):
source foo.sh
Run Code Online (Sandbox Code Playgroud)
由于您还需要将它们导出到环境中,您可能需要做一些额外的工作:
while read -r line; do
export "$line"
done < foo.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6953 次 |
| 最近记录: |