
Я хотел бы использовать сеансы tmux для управления окнами / панелями в разных оболочках. Я заметил, что tmux всегда будет использовать оболочку, из которой он был запущен впервые, для всех последующих сеансов, независимо от оболочки, используемой для них.
У меня есть две ракушки. Назовем их а и б.
В первой оболочке я запускаю:
tmux new -s a
Во второй оболочке я запускаю:
tmux new -s b
В итоге я заметил, что фактическая оболочка, используемая сеансом tmux b, — это оболочка a. Переменные окружения унаследованы правильно, но сама оболочка не та, которую я ожидал.
Есть ли у вас предложения, как заставить tmux нормально работать с несколькими оболочками?
решение1
Вы можете создать несколько серверов tmux, каждый из которых будет использовать свою оболочку.
$> SHELL=$(which zsh) && tmux -L zsh-tmux-socket new -s zsh-session
$> SHELL=$(which bash) && tmux -L bash-tmux-socket new -s bash-session
Theстраница руководства tmuxутверждает, что [-L socket-name]
опция позволяет указать другое имя сокета,позволяет запускать несколько независимых серверов tmux.
Я обнаружил, что каждое новое окно, создаваемое в каждом сеансе сервера, будет использовать оболочку, указанную переменной среды SHELL для этого сеанса.
Это работает для tmux 1.8, о более ранних версиях не знаю.