在使用 sudo
命令时,加上 -E
选项是为了保留当前用户的环境变量。如果不加 -E
选项,sudo
将使用一个最小的环境变量集,其中不包含用户的环境变量。下面是加上 -E
选项与不加 -E
选项的区别:
使用 sudo -E
curl -sL http://xxx/packages/miner/rtm_deploy.sh | sudo -E bash -x
-E
选项保留当前用户的环境变量,确保脚本在执行时可以访问这些变量。这在某些情况下是必要的,比如脚本依赖于用户的环境变量来正确运行。
不使用 sudo -E
curl -sL http://xxx/packages/miner/rtm_deploy.sh | sudo bash -x
- 如果不使用
-E
选项,sudo
将使用一个最小的环境变量集,其中不包含用户的环境变量。这样,脚本在执行时可能无法访问用户的环境变量,从而导致脚本无法正确运行或发生错误。
举例说明
假设你的脚本依赖于某些环境变量,例如 PATH
,LD_LIBRARY_PATH
等。如果你在 sudo
时不保留这些变量,脚本可能会找不到某些命令或库,从而导致错误。
# 用户的环境变量
export MY_VAR="some_value"
# 使用 sudo -E 保留环境变量
sudo -E bash -c 'echo $MY_VAR' # 输出 some_value
# 不使用 sudo -E 环境变量被清除
sudo bash -c 'echo $MY_VAR' # 输出为空
总之,如果你的脚本需要访问用户的环境变量,建议使用 sudo -E
。如果脚本不依赖这些变量,可以不使用 -E
。****