%
fait référence à un 'jobid' qui est utilisé dans le cadre des fonctionnalités "contrôle de travail et contrôle de processus" de zsh. Pour citer le guide de l'utilisateur:
'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.
Exemple:
$> man zshall &
[1] + 31392 suspended (tty output) man zshall
$> jobs
[1] + suspended (tty output) man zshall
$> %
<manpage-opens-for-zshall>
En savoir plus à ce sujet ici: http://zsh.sourceforge.net/Guide/zshguide03.html#l39
Pour répondre à votre vraie question: Si votre zsh n'y met pas d'avertissement ("fg: pas de travail en cours" ou similaire) alors il y a / A ÉTÉ un travail. Exemple:
$> sleep 60 &
$> % echo foo
[1] + 411 running sleep 60
fg: job not found: echo
Le %
vient de récupérer le processus d'arrière-plan et l'exécute. Après 60 secondes, il a obtenu le prochain «jobid» qui n'a pas été trouvé.
Ainsi: Le comportement que vous avez vécu est un peu étrange. Sans votre zshrc complet, il est difficile de dire ce qui se passe exactement. Il semble que vous ayez réussi à dire à votre zsh que le caractère '%' commence un commentaire. Je vérifierais le histchars
paramètre pour sa 3ème valeur:
$> echo $histchars
%
. Bonne prise$histchars
aussi, mais la mienne est un signe de hachage (!^#
). Je suppose que la réponse à mon cas particulier est qu'il y avait des processus en arrière-plan se comportant étrangement dans zsh. Merci encore pour la leçon shell!