如何重置 tmux 的自动会话名称编号?

Doo*_*nob 7 tmux

在不小心按住 ctrl+alt+t 后,我​​的 tmux 会话现在自动以令人讨厌的高数字命名:

llama@llama:~$ tmux ls
124: 1 windows (created Mon Jan  5 16:45:55 2015) [80x24] (attached)
Run Code Online (Sandbox Code Playgroud)

我怎样才能把这个号码重置为1?我曾尝试将tmux rename-session我的会话设置为较低的编号,但在关闭它并打开一个新会话后,编号会从原始编号恢复。

有没有办法在不重新启动 tmux 的情况下解决这个问题?

小智 9

不,这目前是不可能的。

在不重新启动服务器的情况下,您唯一可以做的就是在创建新会话时手动覆盖名称tmux new -s 5,例如:

$ tmux new -d -P
10:
$ tmux ls
10: 1 windows (created Wed Jan  7 15:50:29 2015) [107x89]
$ tmux new -s 5 -d -P
5:
$ tmux ls
10: 1 windows (created Wed Jan  7 15:50:29 2015) [107x89]
5: 1 windows (created Wed Jan  7 15:50:40 2015) [107x89]
$ tmux new -s 5 -d -P
duplicate session: 5
Run Code Online (Sandbox Code Playgroud)

自动会话数量由全局变量支配u_int next_session_idsession.c不能从命令行访问,作为grepping源代码显示。

tmux new-session调用session_create()session.c(线88)和next_session_id当你创建一个新的会话递增。-sflag to new-session(short new)的参数设置name,否则next_session_id使用。

     if (name != NULL) {
              s->name = xstrdup(name);
              s->id = next_session_id++;
     } else {
             s->name = NULL;
             do {
                     s->id = next_session_id++;
                     free(s->name);
                     xasprintf(&s->name, "%u", s->id);
             } while (RB_FIND(sessions, &sessions, s) != NULL);
     }
Run Code Online (Sandbox Code Playgroud)