如何为fish shell中的一个命令设置环境变量?

ska*_*lee 54 shell fish

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

小智 81

不明白为什么这不起作用: env EDITOR=vim crontab -e
这完全绕过了外壳。

  • 这要容易得多。唯一的问题是绕过外壳不允许任何自定义鱼命令,这些命令可能锁定在您的肌肉记忆中。 (4认同)

Den*_*son 28

begin; set -lx EDITOR vim; crontab -e; end
Run Code Online (Sandbox Code Playgroud)

  • 与此同时,这已在鱼常见问题解答中得到解答:http://fishshell.com/docs/current/faq.html#faq-single-env (10认同)
  • 有没有更简单的方法来做到这一点? (3认同)
  • 那个常见问题是这样说的:`env SOME_VAR=1 command` (2认同)

小智 11

那是来自文档

SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".
Run Code Online (Sandbox Code Playgroud)

使用 env 命令。

env SOME_VAR=1 command
Run Code Online (Sandbox Code Playgroud)

您还可以在块中声明一个局部变量,并且不会绕过外壳

begin
  set -lx SOME_VAR 1
  command
end
Run Code Online (Sandbox Code Playgroud)


小智 5

从版本 3.1开始,您可以使用 bash() 中使用的相同语法EDITOR=vim crontab -e

PR介绍该功能: https ://github.com/fish-shell/fish-shell/pull/6287