使用 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
你好,我正在尝试让这样的东西在 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