如何在fish中设置环境变量?

时间:2017-07-15 14:45:34

标签: fish

我是鱼壳的新手,只是尝试设置我的$ EDITOR变量,以便它在会话和重新启动时保持不变。这是我到目前为止所尝试的内容:

  1. 从命令行运行set -gx EDITOR vim
  2. 从命令行运行set -Ux EDITOR vim
  3. 运行这些命令,前缀为set -e EDITOR以取消设置之前的任何值。
  4. 将上述命令添加到我的~/.config/fish/config.fish文件中(它会抱怨set: Warning: universal scope selected, but a global variable “EDITOR” exists.
  5. 卸载oh-my-fish并删除所有鱼类配置从头开始。
  6. 无论我做什么,每当我打开新终端,开始新会话或重启时,EDITOR变量总是最终为/usr/bin/nano。更奇怪的是,在~/.config/fish/fishd.my-hostname中,我看到SET_EXPORT EDITOR vim,而没有关于纳米的事情。这是某种鱼的默认吗?如果是这样,我该如何正确设置?

    编辑:我在Antergos Linux上运行Fish 2.6.0。

1 个答案:

答案 0 :(得分:6)

首先,fish配置文件是〜/ .config / fish / config.fish。编辑您命名的文件将不起任何作用。其次,fish没有任何默认值,也没有设置EDITOR或VISUAL变量。因此无论将其设置为/ usr / bin / nano,都是您系统独有的自定义。

如果你set -Ux EDITOR vim并且没有在config.fish中设置它,它应该被设置为vim,即使它已经在鱼开始时设置了。运行该set命令,然后执行set -U | grep EDITORenv | grep EDITOR以查看它是否已设置为通用变量并导出。现在键入fish以启动子shell。运行前两个命令,您应该看到它仍然设置为相同的值。现在在子shell中键入set -U EDITOR nano,然后输入exit。在早期的shell中,您现在应该看到EDITOR设置为nano。

就我个人来说,我个人不喜欢使用uvars。我只是在〜/ .config / fish / config.fish中set -gX EDITOR (type -p vim)。这样可以确保如果我在安装了〜/ .config / fish目录的新机器上开始钓鱼,我会得到预期的默认值。

不以这种方式使用uvar的另一个原因是解析顺序是局部范围,全局范围,通用范围。由于鱼开始运行时导入的环境变量被放置在全局范围内,它们将遮蔽您定义的uvar。不要导出通用变量。它不太可能产生预期的结果。只需set -gx config.fish脚本中的var。

P.S。,当提出这种性质的问题时,你应该总是包括相关的事实,例如你正在使用的操作系统和鱼版本。

相关问题