Поскольку вы уже просмотрели соответствующую справочную страницу и не нашли ничего подходящего, я представлю альтернативный метод:
setopt PROMPT_SUBST
, поэтому расширение параметров, подстановка команд и арифметическое расширение выполняются в приглашениях.Увеличьте значение varable
cmdcount
(инициализируется 1) для каждой выполняемой команды с помощьюpreexec
ловушки: выполняется сразу после того, как команда прочитана и собирается быть выполнена. (...)Используйте
$cmdcount
в своем приглашении.
Скопируйте и вставьте код для вашего ~/.zshrc
:
setopt PROMPT_SUBST [[ $cmdcount -ge 1 ]] || cmdcount=1 preexec() { ((cmdcount++)) } PS1='$cmdcount ' # notice the single(!) tics
А вот как это работает (слева = bash
с \#
в PROMPT
, справа = zsh
с предложенным кодом):
bash$ PS1="\# " | zsh$ source ./above_code 2 /bin/echo some external command | 1 /bin/echo some external command some external command | some external command 3 cd internal command | 2 cd internal command bash: cd: internal: No such file or directory | cd: string not in pwd: internal 4 [no command, just pressed enter] | 3 [no command, just pressed enter] 4 | 3 4 | 3
Я не знаю о специфическом поведении \#
в bash, но на первый взгляд обе оболочки теперь ведут себя одинаково.