dav*_*ubz 4 linux bash sudo environment-variables
嗨,我正在尝试让这样的东西在 bash 中工作
$ http=xx sudo echo $http
xx
Run Code Online (Sandbox Code Playgroud)
但我不断收到空行,到目前为止唯一有效的是:
$ export http=xx
$ sudo -E echo $http
xx
Run Code Online (Sandbox Code Playgroud)
我想要实现的是能够为 sudo 命令内联变量
我也按照这里的建议尝试过这个
$ sudo http=xx echo $http
Run Code Online (Sandbox Code Playgroud)
但运气不好,我错过了什么吗?
第一个命令的问题是http变量扩展发生在设置之前。
$ http=xx sudo echo $http
Run Code Online (Sandbox Code Playgroud)
尝试一下
$ http=xx sudo -E bash -c 'echo $http'
Run Code Online (Sandbox Code Playgroud)
语法描述于man env
Some have suggested that env is redundant since the same effect is achieved by:
name=value ... utility [ argument ... ]
Run Code Online (Sandbox Code Playgroud)
否则,如果目标不是影响当前 shell 环境,则可以在子 shell 中执行导出和 sudo 命令:
$ ( export http=xx ; sudo -E 'echo $http' )
Run Code Online (Sandbox Code Playgroud)