嗨,我试图让这样的东西在bash中运作
$ http=xx sudo echo $http
xx
但我一直都是空行,到目前为止唯一有用的是:
$ export http=xx
$ sudo -E echo $http
xx
我想要实现的是为sudo命令内联变量的能力
我也按建议here
尝试了这个$ sudo http=xx echo $http
但没有运气,我错过了什么?
答案 0 :(得分:1)
第一个命令的问题是http
变量扩展在设置之前发生。
$ http=xx sudo echo $http
尝试改为
$ http=xx sudo -E bash -c 'echo $http'
语法在man env
Some have suggested that env is redundant since the same effect is achieved by:
name=value ... utility [ argument ... ]
否则,如果目标不影响当前的shell环境,则可以在子shell中完成export和sudo命令:
$ ( export http=xx ; sudo -E 'echo $http' )
答案 1 :(得分:-1)
在我看来,它与已经讨论过的案例非常相似:
如果你这样做:
sudo http=xx su root -c 'echo "$http"'
试着看看这里 https://unix.stackexchange.com/questions/202383/how-to-pass-environment-variable-to-sudo-su