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

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 配置示例](https://jimyag.com/posts/iterm2-multi-tab-ssh-shell-integration-session-path/files/2026-03-01-00-44-04.png)

![创建新窗口时选择 Profile](https://jimyag.com/posts/iterm2-multi-tab-ssh-shell-integration-session-path/files/2026-03-01-00-53-18.png)

关键项：

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 要能上报当前目录，否则无法稳定继承远端路径。

```bash
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 Shell Integration 下载脚本](https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh)

