«Самое простое» решение — создать новый tmux
сервер с другой средой.
$ ENVIRONMENT=production tmux -L prod-tmux
и
$ ENVIRONMENT=staging tmux -L staging-tmux
Вам всегда нужно указать, какой сокет, prod-tmux
или staging-tmux
, использовать всякий раз, когда вы повторно подключаетесь к существующему сеансу.
Следующим решением будет использование одного сервера, но изменение среды каждого сеанса на этом сервере. Что-то вроде
$ tmux new-session -d -s production
$ tmux new-session -d -s staging
$ tmux set-environment -t production ENVIRONMENT production
$ tmux set-environment -t staging ENVIRONMENT staging
Обратите внимание, что ENVIRONMENT
не будет установлено в процессе, работающем в начальном окне для каждого сеанса, но будет установлено для любого последующего создаваемого окна. (Если только сервер не унаследовал ENVIRONMENT
при первом запуске.)
Когда вы запускаете tmux
, он сначала ищет существующий сервер (либо сервер по умолчанию, либо тот, который указан параметрами -L
или -S
). Если сервера нет, он запускается, и среда сервера наследуется от текущей среды.
Если сервер существует, tmux
просто запрашивает сервер выполнить команду tmux (по умолчанию new-session
или любую другую команду, указанную в аргументе tmux
), а затем завершает работу. Окружение самой команды tmux
не имеет значения, если запрошенная команда не задокументирована для чтения из нее (см. set-environment
).
Сервер управляет группой окон, каждое из которых представляет процесс, созданный сервером (а не саму команду tmux
). Сеанс — это просто логическая группа окон, также управляемая сервером.
person
chepner
schedule
24.05.2018
tmux
запускает сервер; ваш второй использует существующий сервер. - person chepner   schedule 24.05.2018