【发布时间】: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=echo 或EDITOR=touch,以便将编辑器调用为touch FILE,而保持FILE 不变。)
奖金
使用: 表示EDITOR 的无操作似乎奇怪地类似于: Bash 内置是等同于true 的无操作命令。巧合?
【问题讨论】: