如何以安全的方式调用“EDITOR”环境变量来打开/编辑文件?

wes*_*esm 2 bash shell scripting editor

有没有办法在 bash 脚本中使用 EDITOR 或 VISUAL 环境变量来使用用户选择的编辑器编辑给定的文件?

fil*_*den 5

您可以使用以下内容:

${VISUAL:-${EDITOR:-vi}} "${filename}"
Run Code Online (Sandbox Code Playgroud)

VISUAL如果已设置,则将使用该变量,否则将使用EDITOR,如果两者均未设置,则将回退到vi

如果您愿意,可以使用不同的回退。特别是,基于 Debian 的发行版通常会提供一个名为editor二进制文件,系统管理员可以控制该二进制文件将系统范围的默认编辑器设置为后备……

vi 通常无处不在,所以它可能是一个合适的默认使用。

请注意,此处未引用变量。不幸的是,这是必要的,因为EDITORorVISUAL设置可以包含命令参数,因此需要支持分

例如,可以使用EDITOR="emacs -nw"强制在终端(而不是窗口系统)上使用 Emacs,或者EDITOR="vim -u $HOME/.vim/custom-vimrc"让 Vim 在由外部程序启动时使用自定义配置。

更新:颠倒顺序先尝试$VISUAL,然后$EDITOR,因为这似乎是最常见的设置(例如 Mutt 邮件客户端、git 等)

  • 在 zsh 上,包含 `=` 以打开分词:`${=VISUAL:-${EDITOR:-vi}` (2认同)