Kur*_*eek 0 environment-variables fish
我有一个环境变量GO111MODULE被设置为on我的~/.config/fish/config.fish:
> echo $GO111MODULE
on
Run Code Online (Sandbox Code Playgroud)
在https://fishshell.com/docs/2.2/faq.html#faq-single-env之后,我想将其设置off为单个命令。作为健全性检查,我尝试了如下echo命令:
> env GO111MODULE=off echo $GO111MODULE
on
Run Code Online (Sandbox Code Playgroud)
但是,我注意到这正在打印,on而不是off我期望的那样。谁能解释为什么这行不通?
输入命令时
env GO111MODULE=off echo $GO111MODULE
Run Code Online (Sandbox Code Playgroud)
在运行或有机会设置变量$GO111MODULE之前,立即(在当前上下文中)替换env变量。因此,env只是将GO111MODULE=off echo on其视为参数。
为了查看环境更改的影响,您需要安排在 env设置环境后进行envvar查找。所以像这样:
env GO111MODULE=off sh -c 'echo $GO111MODULE'
Run Code Online (Sandbox Code Playgroud)
将显示更改后的变量- '周围的单号将阻止当前shell扩展var,因此env将获得4个参数:GO111MODULE=off sh -c和echo $GO111MODULE。然后,它将sh使用两个arg 进行调用,这将反过来扩展该变量并echo使用单个offarg 运行。
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |