Я пытаюсь установить переменную окружения TERM
для сеансов tmux в моем .tmux.conf
на основе значения TERM
унаследованного от родительской оболочки (которая является bash). Обратите внимание, что у меня есть следующая строка в моем .tmux.conf
так что TERM
фактически наследуется:
set -g update-environment '...some variables... TERM'
По сути, TERM
- это xterm-256color
в родительской оболочке, и я обнаружил это и установил default-terminal
по умолчанию, используя следующее:
if "[[ ${TERM} =~ 256color ]]" 'set -g default-terminal screen-256color'
Эта строка работает в tmux 1.9a на моем рабочем ПК (RHEL 6.6) и правильно устанавливает TERM
на screen-256color
, но на других ПК (включая Ubuntu PC на работе под управлением tmux 1.8 и мой домашний Ubuntu PC под управлением tmux 2.1), Команда condition 'всегда возвращает false, и поэтому TERM
все еще остается screen
внутри нового сеанса tmux.
Я также попытался сделать, if 'true' 'set -g default-terminal screen-256color'
, и это тоже не сработало! (TERM
все еще остается screen
внутри нового сеанса tmux).
Может ли кто-нибудь помочь мне понять, что я делаю не так? И, может быть, предложить некоторую информацию о том, почему он работает на одной машине, а не на двух других?
ОБНОВИТЬ:
После запуска tmux
с очень многословным включением (tmux -vvvvvvvvvv
), я думаю, что вижу проблему.
Глядя на файл журнала сервера tmux
(tmux-server-xxxx.log), я вижу следующие строки журнала в следующем порядке (с другими строками между ними, которые я пропустил):
run job 0x55fbca2e7240: [[ xterm-256color =~ 256color ]], pid 4955
cmdq 0x55fbca2dc250: new-session (client 7)
session 0 created
job died 0x55fbca2e7240: [[ xterm-256color =~ 256color ]], pid 4955
Так что кажется, будто новая сессия создается перед командой выходов оболочки, и поэтому вариант сеанса не не установлен , пока позже ... но она установлена.
Чтобы подтвердить это, если я отсоединяю этот сеанс, отредактируйте .tmux.conf
чтобы закомментировать строку, которая проверяет $TERM
/sets default-terminal
, а затем создайте новый сеанс, этот новый сеанс имеет TERM = screen-256color
.
На компьютере RHEL, где команда работает должным образом, эти строки журнала отображаются в другом порядке:
run job 0x1e82ce0: [[ xterm-256color =~ 256color ]], pid 17656
job died 0x1e82ce0: [[ xterm-256color =~ 256color ]], pid 17656
cmdq 0x1e66850: new-session (client 7)
session 0 created
... что, как и ожидалось. И TERM
установлен соответственно на screen-256color
.
Я не указываю параметр -b
для команды if-shell
, поэтому я не уверен, почему моя команда выполняется в фоновом режиме на этих двух компьютерах с Ubuntu. Интересно, это возможное состояние гонки в tmux?