使用 sudo 保留内联变量

preserve inline variable with sudo

你好,我正在尝试让这样的东西在 bash

中工作
$ http=xx sudo echo $http
xx

但我一直得到一个空行,到目前为止唯一有效的是:

$ export http=xx
$ sudo -E echo $http
xx

我想实现的是为 sudo 命令内联变量的能力

我也按照建议尝试了这个here

$ sudo http=xx echo $http

但是运气不好,我是不是漏掉了什么?

第一个命令的问题是 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 环境,则导出和 sudo 命令可以在子shell:

中完成
$ ( export http=xx ; sudo -E 'echo $http' )

在我看来,它与已经讨论过的案例非常相似:

如果你这样做会怎样:

sudo http=xx su root -c 'echo "$http"'

试试看这里 https://unix.stackexchange.com/questions/202383/how-to-pass-environment-variable-to-sudo-su