【问题标题】:Setting EDITOR environment variable to colon (:) to no-op editor将 EDITOR 环境变量设置为冒号 (:) 到无操作编辑器
【发布时间】:2016-12-23 02:23:47
【问题描述】:

EDITOR 环境变量设置为: 是否意味着Unix 中的无操作支持行为?还是它对 Git 有特殊意义?

我偶然发现了这个将 EDITOR=: 传递给 Git 以缩短启动编辑器的尝试的示例:

# Amend the commit, reusing the commit message
EDITOR=: git commit --amend

但请稍等。为什么这行得通? EDITOR 环境变量应设置为指向您的PATH 中的可执行编辑器,例如EDITOR=vim 等。在进行了一些挖掘之后,我发现 Git 会根据 : 显式检查编辑器值,并且在这种情况下不会启动编辑器。 (有关血腥细节,请参阅commit.c。)

所以回到这个问题,Git 似乎支持: 作为无操作编辑器,它通过特殊情况来做到这一点。 : 甚至是 EDITOR 的合法值,还是某些程序支持的约定? (另一种方法是设置EDITOR=echoEDITOR=touch,以便将编辑器调用为touch FILE,而保持FILE 不变。)

奖金

使用: 表示EDITOR 的无操作似乎奇怪地类似于: Bash 内置是等同于true 的无操作命令。巧合?

What is the use case of noop [:] in bash?

【问题讨论】:

    标签: git unix editor


    【解决方案1】:

    : 的使用可能是对 Bourne shell (more reading on that) 的一种认可,但正如您所注意到的,它在 Git 中被明确处理。我不知道在任何地方将EDITOR=: 记录为有望在全球范围内使用的东西。

    Git 对 EDITOR=: 的支持可以追溯到 2007 年:https://github.com/git/git/commit/943316e96ca2dad67086af2f945e42467a27ddd6

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2021-01-07
      • 2022-01-14
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多