Я пишу сценарий оболочки, который создает / подключает или переключает на данный сеанс, в зависимости от того, находится ли он внутри tmux и существует ли сеанс.
У меня все работает отлично, за исключением случая, когда требуется создание нового сеанса tmux из сеанса tmux.
Когда мой скрипт выполняется tmux new-session -s name
, я получаю следующий вывод:
сеансы должны быть вложены осторожно, отключите $ TMUX, чтобы
На самом деле я не хочу вкладывать сеансы, моя цель - создать еще один отдельный сеанс и переключиться на него из сеанса tmux .
Это возможно?
Ответы:
Самый быстрый способ (при условии, что вы используете в
ctrl-b
качестве префикса команды):Чтобы создать новый сеанс, затем
для интерактивного выбора и присоединения к сеансу.
источник
ctrl-b $
Ctrl-b :new -s <name>
дать имя новому сеансу.Как создать сценарий
Этот сценарий проверит, существует ли сеанс. Если сеанс не существует, создайте новый сеанс и подключитесь к нему. Если сеанс существует, ничего не происходит, и мы подключаемся к этому сеансу. Не стесняйтесь заменять `~ / development 'названием проекта.
$ touch ~/development && chmod +x ~/development
Новая сессия с терминала
Давайте создадим два отдельных сеанса, перечислим их, подключим к одному, а затем изнутри tmux перейдем к циклу сеансов.
tmux new -s name -d
работает изнутри tmux, потому что мы создаем новый отдельный сеанс. В противном случае вы получите ошибку вложенности.Новый сеанс из tmux
Теперь мы внутри или более известны как привязанные к нашей целевой сессии. Если мы попытаемся создать новый сеанс во время присоединения, это приведет к ошибке вложенности.
Чтобы решить эту проблему, мы создаем новый отдельный сеанс. например,
Цикл (переключение) сеансов
Prefix
(
предыдущая сессияPrefix
)
следующая сессияПримечание:
Prefix
этоCtrl-b
по умолчанию. Вы можетеPrefix
выполнить привязку кCtrl-a
Mac OSX, а в Mac OSX вы можете изменить Caps Lock на ctrlsystem preferences > keyboard > modifier keys
Подключиться к сеансу с помощью командного режима, находясь внутри tmux
Попытка подключиться к сеансу без отключения приведет к ошибке.
Вместо этого используйте командный режим,
Prefix
:
затем введитеattach -t session_name
и нажмите Enter.источник
Использование этого работает для меня:
В
TMUX=
первой строке требуется, чтобы tmux не выводилsessions should be nested with care, unset $TMUX to force
сообщение.источник
TMUX=`tmux new-session -d -s name`
Все команды, которые вы можете запустить в своем терминале, например,
tmux new -s sessionName
могут быть запущены изнутриtmux
, нажав кнопку триггера (например:),ctrl-b
а:
затем команду без начальнойtmux
части.В результате,
ctrl-b :
а затемnew -s sessionName
будет делать именно то, что вы хотите, и дать имя вашей сессии. Он также автоматически переключается на новый сеанс.источник
Вы можете
unset TMUX
сначала попробовать , у меня это работает.источник
по совету пользователя2354696 я использую следующие привязки клавиш для создания нового сеанса или "клонирования" существующего сеанса
источник