由于前缀匹配,“tmx”(tmux) 错误地连接到现有会话

由于前缀匹配,“tmx”(tmux) 错误地连接到现有会话

我使用“tmx”创建了一个名为“foos”的 tmux 会话,现在我想创建一个名为“foo”的新会话,其中后者是前者的前缀。但 tmux 将我连接到现有会话。

我想直接创建指定的会话。更好的是,我想在所有上下文中处理会话时将“tmx”从前缀匹配切换为精确匹配。

我的“tmx”脚本中有很多内容,但我认为相关部分是:

  if tmux has-session -t "${name}" &> /dev/null; then
    exec env SSH_AUTH_SOCK="${d}/${s}" ${f} tmux "${args[@]}" attach-session -t "${name}"
  else
    exec env SSH_AUTH_SOCK="${d}/${s}" ${f} tmux "${args[@]}" new-session -s "${name}"
  fi

答案1

man 1 tmux:

target-session按顺序尝试:

  1. 以 . 为前缀的会话 ID $
  2. 会话的确切名称(如list-sessions命令所列出)。
  3. 例如,会话名称的开头mysess将匹配名为 的会话mysession
  4. fnmatch(3)与会话名称匹配的模式。

所以这是设计使然:如果没有精确匹配,就会出现不太精确的匹配。除非……

如果会话名称以 为前缀=,则仅接受完全匹配(因此=mysess只会完全匹配mysess,而不是mysession)。

解决办法:-t "=${name}"适当使用。

相关内容