我的环境变量去哪儿了?
where did my environment variable go?
我正在尝试在 bash 脚本中使用环境变量,该脚本需要 运行 作为 sudo
和 source
。
我有以下文件 (my_file.sh)
echo "this is DOMAIN = $DOMAIN"
我的会话中有 DOMAIN
环境变量..
现在我需要 运行
sudo -E bash -c "source ./my_file.sh"
但输出不显示 $DOMAIN
的值。相反,它是空的。
如果我将命令更改为
sudo -E bash -c "echo $DOMAIN"
我看到了正确的值..
我做错了什么?
使用命令行:
sudo -E bash -c "source ./my_file.sh"
你是 运行 一个可能引用需要从父 export
编辑 shell 才能可见的环境变量的脚本。
另一方面:
sudo -E bash -c "echo $DOMAIN"
在父 shell 中扩展 $DOMAIN
的值,而不是在您的 sudo
行中。
为了证明这一点,请尝试使用单引号 "working" 解决方案:
sudo -E bash -c 'echo $DOMAIN'
为了让事情顺利进行,请尝试导出变量:
export DOMAIN
sudo -E bash -c "source ./my_file.sh"
或者,在命令行中传递 $DOMAIN:
sudo -E bash -c "source ./my_file.sh $DOMAIN"
并让您的脚本参考
。
我正在尝试在 bash 脚本中使用环境变量,该脚本需要 运行 作为 sudo
和 source
。
我有以下文件 (my_file.sh)
echo "this is DOMAIN = $DOMAIN"
我的会话中有 DOMAIN
环境变量..
现在我需要 运行
sudo -E bash -c "source ./my_file.sh"
但输出不显示 $DOMAIN
的值。相反,它是空的。
如果我将命令更改为
sudo -E bash -c "echo $DOMAIN"
我看到了正确的值..
我做错了什么?
使用命令行:
sudo -E bash -c "source ./my_file.sh"
你是 运行 一个可能引用需要从父 export
编辑 shell 才能可见的环境变量的脚本。
另一方面:
sudo -E bash -c "echo $DOMAIN"
在父 shell 中扩展 $DOMAIN
的值,而不是在您的 sudo
行中。
为了证明这一点,请尝试使用单引号 "working" 解决方案:
sudo -E bash -c 'echo $DOMAIN'
为了让事情顺利进行,请尝试导出变量:
export DOMAIN
sudo -E bash -c "source ./my_file.sh"
或者,在命令行中传递 $DOMAIN:
sudo -E bash -c "source ./my_file.sh $DOMAIN"
并让您的脚本参考 。