将 EDITOR 环境变量设置为冒号 (:) 到无操作编辑器
Setting EDITOR environment variable to colon (:) to no-op editor
是否将 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
.巧合?
What is the use case of noop [:] in bash?
:
的使用可能是对 Bourne shell (more reading on that) 的认可,但正如您所注意到的那样,它在 Git 中得到了明确处理。我不知道有什么地方将 EDITOR=:
记录为预期在全球范围内起作用的东西。
Git 对 EDITOR=:
的支持可以追溯到 2007 年:https://github.com/git/git/commit/943316e96ca2dad67086af2f945e42467a27ddd6!
是否将 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
.巧合?
What is the use case of noop [:] in bash?
:
的使用可能是对 Bourne shell (more reading on that) 的认可,但正如您所注意到的那样,它在 Git 中得到了明确处理。我不知道有什么地方将 EDITOR=:
记录为预期在全球范围内起作用的东西。
Git 对 EDITOR=:
的支持可以追溯到 2007 年:https://github.com/git/git/commit/943316e96ca2dad67086af2f945e42467a27ddd6!