Кавычки в приглашениях zsh

                     _|        
 _|_|_|_|    _|_|_|  _|_|_|    
     _|    _|_|      _|    _|  
   _|          _|_|  _|    _|  
 _|_|_|_|  _|_|_|    _|    _|  
Решил я как-то впихнуть себе текущую ветку git в приглашение, и таки впихнул ☺

Но поведать сегодня хочу не об этом, а о небольшом моменте который меня в то время «зацепил» — собственно вывод переменных или результата функции в приглашении zsh и разборки с кавычками…
Дело в том что обычно описание приглашения идет в двойных кавычках, но если указать в этих кавычках, к примеру, переменную $? (код завершения предыдущей программы), то эта переменная будет считана всего один раз, т.е. приглашение будет иметь всегда один и тот же вид , поэтому что бы результат считывался перед каждым выводом приглашения используют %? (или всякие %m %n) или одинарные кавычки.
Но вот вывод результата функции несколько отличается — просто указание функции не работает, посему просто '$(function_name)'. И вот благодаря этому можно выводить в приглашении что угодно без использования add-zsh-hook, как это часто делают воводя тот же git brunch. Аналогичное же поведение и у приглашения в bash.
К примеру, наипростейший вывод помянутой ветки git будет выглядеть так
git_branch() { basename `(git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null` 2> /dev/null}
PROMPT='$(git_branch)'"ваше приглашение"
Ну а дальше можно навернуть ещё больше, расскрасить там аль вывести что изменения незакомиченные имеются…
Shtucer 14-05-2014
Powerline похоже реализует. Только ещё со свистелками и красотой.
muhas 14-05-2014
@Shtucer блекджек и шлюхи у меня не в комплекте, только функции) поверлайн няшка...