echo
встроенный выполняет расширение обратной косой черты в Вашей системе (это настраивается, и значение по умолчанию системно-зависимо). prompt
переменная содержит литеральные обратные косые черты, и быстрое расширение является немного странным.
Если Вы хотите включать терминальные escape-последовательности в свою подсказку, они должны быть между %{
…%}
, как в
set prompt="%{\e[1m%}NEW-PROMPT%{\e[0m%}"
Но это более просто (и в принципе более портативно) использовать встроенную escape-последовательность для полужирного текста.
set prompt="%BNEW-PROMPT%b"
tmux
запускает оболочку входа в систему по умолчанию, таким образом, ~/.bashrc
не будет выполняться (который затем впоследствии источники ~/.bash_aliases
. Необходимо получить ~/.bashrc
от Вашего ~/.bash_profile
. Посмотрите INVOCATION
раздел man bash
.
(Ответ Chris Down имеет правильное объяснение, но не хорошее обходное решение),
Ваша проблема происходит от комбинации ошибки дизайна удара и ошибки дизайна tmux.
По умолчанию tmux запускает оболочку входа в систему в каждом окне. Это не имеет никакого смысла: при установке tmux как оболочки входа в систему необходимо установить default-command
опция к чему-то другому, чем tmux; и если Вы не установили tmux как свою оболочку входа в систему, необходимо установить default-command
опция постараться не запускать оболочку входа в систему внутри tmux. Так надуйте это в Вашем ~/.tmux.conf
сказать tmux запускать обычную оболочку:
set-option -g default-command $SHELL
Затем Ваш .bashrc
будет считан. Существует другая проблема с ударом, который не имеет значения здесь, если Вы настраиваете tmux, как рекомендуется выше, но который появится снова, если Вы войдете в систему в текстовом режиме (на текстовой консоли, или по SSH). Чтения Bash ~/.bash_profile
в оболочках входа в систему, и ~/.bashrc
в интерактивных оболочках, но только если они не оболочки входа в систему. Читать ~/.bashrc
также в оболочках входа в систему, если они являются интерактивными, добавьте это к Вашему ~/.bash_profile
:
case $- in *i*) . ~/.bashrc;; esac