byobu错误:会话应小心嵌套。取消设置$ TMUX

时间:2013-09-30 16:17:50

标签: byobu

我遇到了以下错误消息:

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]]

我可以问你推荐什么吗?

2 个答案:

答案 0 :(得分:4)

正如错误所示,在ByobuByobu内嵌套Tmux个会话可能很复杂。如果您知道要执行此操作,则只需取消设置TMUX环境变量即可覆盖此保护,您可以在一行上执行此操作:

TMUX=  byobu

对于您的第二个问题,您似乎正在尝试运行GNU Screen -ls命令列出会话?如果是这样,你可能会混淆Byobu现在支持两种不同的后端:Tmux和Screen。

Byobu中的默认行为是使用Tmux后端。但是,您可以随时直接覆盖二进制文件byobu-tmuxbyobu-screen,或者您可以使用byobu-select-backend永久选择和配置默认后端,然后简单{{此后,{3}}命令将默认为该后端。

完全披露:我是byobu的作者和维护者。

答案 1 :(得分:2)

  1. 也许你在byobu会话中没有意识到你已经成功了?当我看到这个时,有点" doh"时刻。
  2. 似乎
  3. Byobu将参数传递给它在后端使用的程序。如果你意识到并传递了-ls,那就是你知道screen接受-ls参数。但除非您另有说明,否则byobu正在使用TMUX,因此TMUX会抱怨这些参数。我希望,这更清楚地解释了神秘的输出。
  4. 我发现如果我有多个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)
    

    如果只有一个会话在运行,它就不会给我这个输出。

    我从Dustin的回答中学到了关于$TMUX环境变量的一些信息。但是,我认为这需要更多的解释。

    $TMUX将包含TMUX必须用于处理/保持跟踪会话的某些文件的路径。

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

    显然清除此环境变量会使TMUX忘记所有会话,并且它让您按照自己的意愿行事,因为它甚至没有意识到您正在嵌套。这在您收到的第一条错误消息中称为强制

    我认为更好的选择是审核所有开放会话并决定是否真的想要嵌套,并可能关闭一些陈旧的会话,而不是强迫TMUX屈服于你的意愿。但那只是恕我直言。