Мой .bashrc
PS1
(сокращенно)
\u\[\e[01;3$(($RANDOM % 8))m\]@\h \w $'
Благодаря тому, как работает bash, он интерполирует случайный цвет после каждой команды, поэтому @
каждый раз имеет другой цвет (по крайней мере, в диапазоне 31-37).
Однако мне не удалось сделать что-то подобное в zsh. Синтаксис $''
не допускает подстановки команд, а также не работает объединение:
$'\e[01;3'$(($RANDOM % 8))
# The \e[01;3 character is printed first, then the random number
Использование кавычек "
тоже не работает; он просто выводит буквальное \e...
Я знаю, что zsh также имеет некоторые встроенные цвета текста, такие как %{$fg[red]%}
, и я мог бы каким-то образом выбрать случайный цвет из массива, но проблема в том, что он должен быть выбран случайным образом с помощью PS1
, а не просто при запуске, иначе случайный выбор будет производиться только один раз.
Есть ли способ интерполировать случайное число в PS1 в zsh для достижения этой цели?