我目前对以下内容感到困惑:
sudo echo $MYVAR
从我的.bashrc输出我的变量,
但
sudo ./test.sh
没有,其中test.sh是以下可执行文件:
#!/bin/sh
echo $MYVAR
我正在运行Ubuntu 14.04。有人可以告诉我这里发生了什么吗?
答案 0 :(得分:7)
当你运行sudo echo $MYVAR
时,环境变量会在你的shell中展开......在sudo
命令看到它之前。
使用sudo
运行脚本时,该脚本只会看到sudo
已包含在环境中的环境变量。出于安全原因,默认是不包括它们。
sudo
命令有一个选项-E
,它告诉命令用户想要通过所有环境变量。 sudoers配置文件可能允许也可能不允许。