使用 bash 脚本中 .bashrc 中定义的环境变量

cha*_*com 3 bash environment-variables

如果我们在 .bashrc 中设置自定义环境变量,如下所示:

TMP_STRING='tmp string'
Run Code Online (Sandbox Code Playgroud)

看来这个变量不能直接从 bash 脚本访问。

#!/bin/bash

echo $TMP_STRING
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但它也不起作用:

#!/bin/bash

source ~/.bashrc

echo $TMP_STRING
Run Code Online (Sandbox Code Playgroud)

您能建议在这种情况下正确的方法是什么吗?谢谢你!

Hen*_*eld 5

只是VAR=value定义了一个shell 变量。环境变量位于进程内存的一个单独区域中,该区域在另一个进程启动时被保留,但在其他方面与 shell 变量没有区别。

要将变量提升为环境变量,您必须export这样做。

例子:

VAR=value
export VAR
Run Code Online (Sandbox Code Playgroud)

或者

export VAR=value
Run Code Online (Sandbox Code Playgroud)

如果将上述内容放入.bashrc,则上述 的值$VAR应该在脚本中可用,但前提是它是从登录 shell 运行的。

我不建议.bashrc在脚本中进行采购。相反,创建一个单独的文件,名称类似于.script.init.sh和 source:

# script init
TMP_STRING='tmp string'
Run Code Online (Sandbox Code Playgroud)

你的脚本:

# script
. ~/.script.init.sh
Run Code Online (Sandbox Code Playgroud)

如果该值必须可用于脚本生成的任何进程,请在其前面添加前缀export

# script init
export TMP_STRING='tmp string'
Run Code Online (Sandbox Code Playgroud)