ᕕ( ᐛ )ᕗ Jimyag's Blog

iTerm2 多标签 SSH:用 Shell Integration 保持会话路径

· 146 字 · 约 1 分钟

这篇记录一个常用终端工作流:

  1. 每次打开新标签页,自动 ssh 到指定主机。
  2. 通过 Duplicate Tab 打开的标签页,默认进入和当前标签页相同的远端路径。

核心点是同时配置两件事:

  1. Profile 的启动命令固定为 ssh <host>
  2. 在本地和远端都安装 iTerm2 Shell Integration,让 iTerm2 能感知当前目录(CWD)。

目标效果

  • 在 iTerm2 中打开标签页时,自动连到目标机器。
  • 如果当前标签页在远端 /data/app,使用 Duplicate Tab 后新标签页也会落在 /data/app(依赖 Shell Integration 正常上报目录)。

iTerm2 配置

按下面配置一个专用 Profile(例如命名为 ssh-dev):

iTerm2 Profile 配置示例

创建新窗口时选择 Profile

关键项:

  1. Command 选择 SSH
  2. 命令填 ssh your-user@your-host(按你的实际主机改)。
  3. Working Directory 选择 Reuse previous session's directory
  4. 打开 Load shell integration automatically 开关。

完成后,使用这个 Profile 打开新标签页即可。

创建新 Window 时,也可以在 iTerm2 的菜单里直接选择对应 Profile(例如 ssh-dev),这样新窗口启动后会直接进入你预设的 SSH 会话。 菜单路径示例:Shell > New Window > ssh-dev

注意:路径继承以 Duplicate Tab 为准。普通 cmd+t 新建标签页在你的配置下可能不会继承当前目录。

如果你习惯 cmd+t,可以在 iTerm2 快捷键中把 cmd+t 改绑为 Duplicate Tab,这样按键习惯不变,同时保留路径继承行为。

安装 Shell Integration

本地和远端都建议安装。至少远端 shell 要能上报当前目录,否则无法稳定继承远端路径。

1
curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash

安装后重开终端会话,再连一次远端。

验证

  1. ssh-dev Profile 打开第一个标签页。
  2. 在远端执行 cd /tmp(或任意目录)。
  3. 使用 iTerm2 的 Duplicate Tab 打开新标签页。
  4. 观察是否自动连接同一主机,且路径仍是刚才目录。

常见问题

  1. 新标签页能 ssh 但路径没继承。 常见原因是远端没有生效 Shell Integration,或者 shell 启动脚本没有正确加载。
  2. 有时进入家目录而不是当前目录。 先确认 Profile 已设置 Reuse previous session's directory,再检查是否是首次会话(首次没有“上一个目录”可继承)。
  3. 只想部分标签页自动 ssh。 不要改默认 Profile,单独建一个 ssh-* Profile 按需使用。

参考链接

#Iterm2 #Ssh