54 votes

caractère de commentaire zsh

De nombreux scripts bash invoquent l'option # pour indiquer un commentaire. Catalina a migré vers zsh. La commande :

# Comments should elicit no response

renvoie à

zsh : commande non trouvée : #

Je trouve des exemples de commandes utiles sur le web : il est utile d'annoter les commandes avec ledit #weblink pour qu'il soit capturé dans l'historique.

J'ai trouvé ce message : https://stackoverflow.com/a/11873793/4953146

  1. Y a-t-il une raison pour que le # pour ne pas être reconnu comme le caractère de commentaire dans zsh ?
  2. Comment configurer le terminal pour qu'il reconnaisse le caractère comme un commentaire ?

La question 1 établit le contexte pour décider d'une méthode pour répondre à la question 2. Ce serait bien de pouvoir configurer le caractère une fois et toutes les instances futures de zsh suivraient. S'il y a / avait une bonne raison pour laquelle cette fonctionnalité a été désactivée, j'aimerais en comprendre les raisons.

Il est important de comprendre le "pourquoi" pour déterminer le "comment". Il semble y avoir de nombreuses façons de restaurer # commenter en zsh. Une solution durable consiste à ajouter au fichier de configuration : sudo vi /etc/zshrc :

setopt interactivecomments

D'autres méthodes (non durables) incluent l'invocation de ksh ou sh.

Merci à l'utilisateur3439894 et à Allan pour avoir soutenu et fait avancer la question.

12voto

Douglas Points 10417

Cela est dû à la façon dont Bash/Zsh est configuré pour gérer les caractères de commentaire dans les shells interactifs et non interactifs.

Normalement, les caractères de commentaire ne sont pas reconnus par défaut dans les shells interactifs, ce comportement est donc normal.

Extrait du manuel de référence de Bash, Chapitre 3.1.3 - Commentaires :

Dans un shell non interactif, ou dans un shell interactif dans lequel l'option interactive_comments de la commande shopt builtin est activé, un mot commençant par '#' entraîne l'ignorance de ce mot et de tous les autres caractères de cette ligne. Un shell interactif sans l'option interactive_comments L'option activée n'autorise pas les commentaires. Le site interactive_comments est activée par défaut dans les shells interactifs.

La différence entre les shells interactifs et non interactifs est que dans les premiers, l'entrée et la sortie se font via le terminal de l'utilisateur, alors que dans les seconds, les commandes sont asynchrones (aucune interaction). Bien que vous soyez dans un shell interactif, lorsque vous démarrez un script, un sous-shell non interactif est créé.

Bien que j'aie fait référence à Bash dans cette réponse, Zsh est identique. Chapitre 6.7 - Commentaires se lit presque de la même façon :

Dans les interpréteurs de commandes non interactifs, ou dans les interpréteurs de commandes interactifs avec l'option INTERACTIVE_COMMENTS, un mot commençant par le troisième caractère de l'extension histchars ('#' par défaut) fait que ce mot et tous les caractères suivants jusqu'à une nouvelle ligne sont ignorés.


S'il y a / avait une bonne raison pour laquelle la fonctionnalité a été désactivée, j'aimerais en comprendre les raisons.

J'hésite à utiliser le mot "désactivé" car il s'agit simplement d'une variable d'environnement qui définit l'environnement d'exécution ; elle est simplement "non définie" par défaut. Il n'y a pas de documentation sur la raison pour laquelle Apple a (finalement) choisi de l'activer.

Je peux confirmer que dans d'autres systèmes d'exploitation que j'ai testés (FreeBSD et Debian), j'ai installé Zsh (v5.8) et dans les deux, le comportement décrit est le même qu'ici - il n'est pas défini. Cela indique que les gens de Zsh ont décidé que c'était leur comportement préféré pour l'environnement d'exécution. Comme nous ne pouvons pas spéculer sur la raison pour laquelle Apple a fait quelque chose, il est encore plus difficile de spéculer sur la raison pour laquelle Zsh a fait/n'a pas fait quelque chose et pourquoi Apple ne l'a pas modifié. Bien qu'il soit probablement plus sûr qu'Apple ait simplement suivi les valeurs par défaut.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X