Byobu ОШИБКА: Сессии должны быть вложены с осторожностью. Отменить $TMUX, чтобы заставить

Появились следующие сообщения ERROR:

1.

byobu
ERROR: Sessions should be nested with care. Unset $TMUX to force.

некоторые версии покажут предупреждение вместо ошибки:

WARNING: Sessions should be nested with care.

2.

byobu -ls
tmux: unknown option -- s
usage: tmux [-28lquvV] [-c shell-command] [-f file] [-L socket-name]
            [-S socket-path] [command [flags]]

Могу ли я спросить, что вы рекомендуете?

Ответ 1

Как показывает ошибка, вложенные Byobu сеансы внутри Byobu или Tmux может быть сложным. Если вы знаете, что хотите сделать это, вам просто нужно отключить переменную среды TMUX, чтобы переопределить эту защиту, которую вы можете сделать в одной строке следующим образом:

TMUX=  byobu

К вашему второму вопросу, похоже, вы пытаетесь запустить экран GNU - команда для списка сеансов? Если это так, вы, вероятно, сбиваете с толку тот факт, что Byobu теперь поддерживает два разных backend: Tmux и Screen.

Поведение по умолчанию в Byobu - использовать бэкэнд Tmux. Тем не менее, вы можете временно переопределить это в любое время, вызвав непосредственно двоичные файлы byobu-tmux или byobu-screen, или вы можете навсегда выбрать и сконфигурировать свой бэкэнд по умолчанию с помощью byobu-select-backend, а затем просто byobu по умолчанию будет использоваться этот бэкэнд.

Полное раскрытие: Я являюсь автором и сопровождающим Byobu.

Ответ 2

  • Возможно, вы не поняли, что УЖЕ были в сеансе byobu? Это когда я увидел это, немного "дой" момента.
  • byobu, кажется, передает аргументы программе, которую он использует на бэкэнд. Престижность, если вы поняли это и передали -ls, потому что знаете, что screen принимает аргумент -ls. Но если вы не указали иначе, byobu использует TMUX, поэтому TMUX жаловался на аргументы. Это, я надеюсь, более четко объясняет загадочный вывод.

Я обнаружил, что если у меня есть несколько сеансов byobu (не обязательно вложенных), и я вызываю byobu из еще одного терминала (не из byobu), он даст мне несколько вариантов. Я предполагаю, что это фактически TMUX вывод:

byobu
Byobu sessions...

  1. tmux: 0: 1 windows (created Wed Aug 27 10:31:14 2014) [209x57] (attached)
  2. tmux: 1: 1 windows (created Wed Aug 27 10:31:23 2014) [80x23] (attached)
  3. Create a new Byobu session (tmux)
  4. Run a shell without Byobu (/bin/bash)

Если работает только один сеанс, он не дает мне этот вывод.

Я узнал что-то из ответа Дастина, о переменной среды $TMUX. Но это требует большего объяснения, я думаю.

$TMUX будет содержать путь к некоторым файлам, которые TMUX должен использовать для жонглирования/отслеживания сеансов.

(from within a byobu session)
echo $TMUX
/tmp/tmux-1000/default,2003,0

Очевидно, что очистка этой переменной среды делает TMUX забыть обо всех сеансах, и это позволяет делать то, что вы хотите, потому что оно даже не осознает, что вы вложенности. Это называется принудительным в первом сообщении об ошибке, которое вы получили.

Я думаю, что лучшей альтернативой является просмотр всего открытого сеанса и принятие решения о том, действительно ли вы хотите вложить или нет, и потенциально закрыть какой-то устаревший сеанс вместо того, чтобы заставить TMUX согнуть вашу волю. Но это просто ИМХО.