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

Jon*_*han 2 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并删除所有鱼类配置从头开始.

无论我做什么,EDITOR变量总是/usr/bin/nano在我打开新终端,开始新会话或重新启动时结束.更奇怪的是,在~/.config/fish/fishd.my-hostname我看来SET_EXPORT EDITOR vim,并没有关于纳米.这是某种鱼的默认吗?如果是这样,我该如何正确设置?

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

Kur*_*der 8

首先,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.运行前两个命令,您应该看到它仍然设置为相同的值.现在输入set -U EDITOR nano子shell,然后输入exit.在早期的shell中,您现在应该看到EDITOR设置为nano.

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

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

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