我遇到了以下错误消息:
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]]
我可以问你推荐什么吗?
答案 0 :(得分:4)
正如错误所示,在Byobu或Byobu内嵌套Tmux个会话可能很复杂。如果您知道要执行此操作,则只需取消设置TMUX环境变量即可覆盖此保护,您可以在一行上执行此操作:
TMUX= byobu
对于您的第二个问题,您似乎正在尝试运行GNU Screen -ls命令列出会话?如果是这样,你可能会混淆Byobu现在支持两种不同的后端:Tmux和Screen。
Byobu中的默认行为是使用Tmux后端。但是,您可以随时直接覆盖二进制文件byobu-tmux或byobu-screen,或者您可以使用byobu-select-backend永久选择和配置默认后端,然后简单{{此后,{3}}命令将默认为该后端。
完全披露:我是byobu的作者和维护者。
答案 1 :(得分:2)
byobu
会话中没有意识到你已经成功了?当我看到这个时,有点" doh"时刻。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)
如果只有一个会话在运行,它就不会给我这个输出。
我从Dustin的回答中学到了关于$TMUX
环境变量的一些信息。但是,我认为这需要更多的解释。
$TMUX
将包含TMUX
必须用于处理/保持跟踪会话的某些文件的路径。
(from within a byobu session)
echo $TMUX
/tmp/tmux-1000/default,2003,0
显然清除此环境变量会使TMUX
忘记所有会话,并且它让您按照自己的意愿行事,因为它甚至没有意识到您正在嵌套。这在您收到的第一条错误消息中称为强制。
我认为更好的选择是审核所有开放会话并决定是否真的想要嵌套,并可能关闭一些陈旧的会话,而不是强迫TMUX
屈服于你的意愿。但那只是恕我直言。