12

我遇到了以下错误消息:

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

我可以问你推荐什么吗?

4

2 回答 2

3

正如错误所暗示的,在ByobuTmux中嵌套Byobu会话可能很复杂。如果你知道你想这样做,你只需要取消设置 TMUX 环境变量来覆盖这个保护,你可以像这样在一行上做:

TMUX=  byobu

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

Byobu 中的默认行为是使用 Tmux 后端。但是,您可以随时临时覆盖它,通过直接调用二进制文件byobu-tmuxbyobu-screen ,或者您可以使用byobu-select-backend永久选择和配置默认后端,然后简单的byobu命令将默认为之后的那个后端。

全面披露:我是Byobu的作者和维护者。

于 2013-09-30T16:46:16.190 回答
2
  1. 也许你没有意识到你已经在一个byobu会话中?那是我看到这个的时候,有点“doh”的时刻。
  2. Byobu似乎将参数传递给它在后端使用的程序。如果您意识到这一点并通过 -ls 表示感谢,因为您知道这screen需要 -ls 参数。但除非你另有说明,否则byobu就是 using TMUX,所以TMUX抱怨这些论点。我希望这能更清楚地解释神秘的输出。

我发现如果我有多个byobu会话(不一定是嵌套的),并且我byobu从另一个终端(而不是从 inside 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屈服于您的意愿。但这只是恕我直言。

于 2014-08-27T17:45:16.157 回答