%
bezieht sich auf eine 'Job-ID', die als Teil der Funktionen "Jobsteuerung und Prozesssteuerung" von zsh verwendet wird. Um aus der Bedienungsanleitung zu zitieren:
'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.
Beispiel:
$> man zshall &
[1] + 31392 suspended (tty output) man zshall
$> jobs
[1] + suspended (tty output) man zshall
$> %
<manpage-opens-for-zshall>
Lesen Sie hier mehr darüber: http://zsh.sourceforge.net/Guide/zshguide03.html#l39
Um Ihre eigentliche Frage zu beantworten : Wenn Ihr zsh dort keine Warnung ausgibt ("fg: kein aktueller Job" oder ähnliches), dann gibt es einen Job. Beispiel:
$> sleep 60 &
$> % echo foo
[1] + 411 running sleep 60
fg: job not found: echo
Der hat %
gerade den Hintergrundprozess zurückbekommen und führt ihn aus. Nach 60 Sekunden bekam es die nächste 'Job-ID', die nicht gefunden wurde.
Also: Das Verhalten, das Sie erlebt haben, ist etwas seltsam. Ohne Ihre volle zshrc ist es schwer zu sagen, was genau los ist. Es scheint, als hätten Sie es geschafft, Ihrem zsh mitzuteilen, dass das Zeichen '%' einen Kommentar startet. Ich würde den histchars
Parameter auf seinen 3. Wert überprüfen :
$> echo $histchars
%
. Guter Fang$histchars
auch, aber meiner ist ein Hash-Zeichen (!^#
). Ich vermute, die Antwort auf meinen speziellen Fall ist, dass es einige Hintergrundprozesse gab, die sich in zsh seltsam verhalten. Nochmals vielen Dank für die Shell-Lektion!