如何在鱼壳中只设置一个命令的环境variables?

在bash中,我可以做EDITOR=vim crontab -e 。 我可以在鱼壳中获得类似的效果吗?

 begin; set -lx EDITOR vim; crontab -e; end 

不明白为什么这不应该工作: env EDITOR=vim crontab -e
这完全绕过了壳。

这是来自文档

 SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1". 

使用env命令。

 env SOME_VAR=1 command 

你也可以在块中声明一个局部variables,并且不会绕过shell

 begin set -lx SOME_VAR 1 command end 

取决于function的定义,这可能会失败

 begin set -lx RAILS_ENV staging be rails r "p ENV['RAILS_ENV']" end 

为了它的工作:

 function be --description 'Runs bundle exec' --no-scope-shadowing bundle exec $argv end 

请参阅–no-scope-shadowing选项的解释

-S或–no-scope-shadowing允许函数访问调用函数的variables。 通常情况下,函数中的所有与调用函数中variables名称相同的variables都是“隐藏的”,其内容与调用函数无关。