Définir la variable d’environnement EDITOR sur deux points (:) dans l’éditeur no-op

Est-ce que la définition de la variable d’environnement EDITOR la suivante : pour signifier un comportement non pris en charge sous Unix? Ou est-ce spécial pour Git?

Je suis tombé sur cet exemple de passage EDITOR=: à Git pour court-circuiter toute tentative de lancement d’un éditeur:

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

Mais attendez une seconde. Pourquoi ça marche? La variable d’environnement EDITOR doit être définie pour pointer vers un éditeur exécutable dans votre PATH , comme EDITOR=vim et autres. Après quelques recherches, j’ai trouvé que Git vérifie explicitement la valeur de l’éditeur par rapport à : et ne lance pas d’éditeur dans ce cas. (Voir commit.c pour les détails gory.)

Donc, pour revenir à la question, il semble que Git prenne en charge : tant qu’éditeur No-Op, et ce, en utilisant des boîtiers spéciaux. Est-ce que : même une valeur légale pour EDITOR , ou quelque chose d’une convention soutenue par certains programmes? (Une alternative serait de définir EDITOR=echo ou EDITOR=touch pour que l’éditeur soit appelé en tant que touch FILE , laissant le FILE non modifié.)

Prime

Utiliser : pour signifier no-op pour EDITOR semble étrangement similaire à la façon dont : intégrée Bash est la commande no-op équivalente à true . Coïncidence?

Quel est le cas d’utilisation de noop [:] dans bash?

L’utilisation de : est probablement un signe de tête pour les shells Bourne ( plus de lecture à ce sujet ), mais comme vous le constatez, il est explicitement traité dans Git. Je ne connais nulle part la documentation EDITOR=: quelque chose qui devrait fonctionner au niveau mondial.

Prise en charge de Git pour EDITOR=: date de 2007: https://github.com/git/git/commit/943316e96ca2dad67086af2f945e42467a27ddd6 !