Мне нравится хранить мой репозиторийbash_profile
в git и клонировать его на любые машины, к которым у меня есть доступ к оболочке. Поскольку в tmux
большинстве случаев у меня есть user@host
строка в строке состояния, а не ее традиционное место в приглашении оболочки.
Однако не все сайты, которые я использую, tmux
установлены, или я не всегда ими пользуюсь. Я хотел бы определить, когда я не нахожусь в tmux
сеансе, и соответствующим образом настроить подсказку. Пока что мое недоделанное решение .bash_profile
выглядит примерно так:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Проверять каждый раз, вероятно, не лучший подход, поэтому я открыт для предложений по лучшему способу сделать это. Скрипты Bash не моя сильная сторона.)
TMUX_PANE
. Я заметил только потому, что ваш рецепт не сработал. Позже я узнал, что неправильно использовал (и впоследствииunset
) переменную в сценарии оболочки, который я использую для поиска.profile
.[ "$TERM" = "screen" ]
может не работать. В моем случае мой экран былscreen-256
цветным.Попробовав разные способы, это то, что в конечном итоге сработало для меня, на случай, если это кому-нибудь поможет:
В этом фрагменте кода я проверяю, не находимся ли мы в среде TMUX, я запускаю его. Если вы поместите этот фрагмент кода в свой
.bashrc
файл, вы будете автоматически запускать TMUX при каждом открытии терминала! PS: проверено на оболочке Ubuntu.источник
Как и в предыдущих ответах, тестирование
${TERM}
переменной может привести к угловым случаям,tmux
установив переменные среды в пределах собственной жизни:Чтобы проверить, находитесь ли вы внутри
tmux
среды, просто проверьте:$ [ -z "${TMUX}" ] && echo "not in tmux"
источник