如何让iTerm2 Python API识别脚本运行所在的标签页?
解决iTerm2脚本获取当前运行标签页标题的问题
你的问题出在current_tab获取的是全局最前端标签页,而非脚本所在的标签页。要获取当前运行脚本的会话对应的标签页,需要通过**当前会话(Session)**关联,而非全局窗口对象。
修改后的脚本如下:
import iterm2 import sys async def main(connection): # 获取当前运行脚本的终端会话 session = await iterm2.Session.async_get_current(connection) if not session: sys.exit(1) # 获取会话所属的标签页 tab = session.tab # 优先获取自定义标题,无自定义标题则用标签页默认名称 title = await tab.async_get_variable("titleOverride") if not title: title = await tab.async_get_variable("name") # 输出标题供bash读取 print(title.strip()) iterm2.run_until_complete(main)
在.bashrc中调用脚本并设置历史文件:
# 调用脚本获取当前标签页标题 TAB_TITLE=$(python3 /path/to/your/script.py) # 将bash历史文件与标签页标题绑定 export HISTFILE="$HOME/.bash_history_${TAB_TITLE}" # 配置历史记录规则(可选) export HISTCONTROL=ignoredups:erasedups shopt -s histappend
关键说明
iterm2.Session.async_get_current(connection):精准定位到执行脚本的那个终端会话,从会话关联到所属标签页,避免全局最前端标签页的干扰。- 兼容自定义标题与默认标签名,避免出现空值导致历史文件命名异常。
- 脚本通过标准输出传递标题,bash用
$(...)捕获后直接赋值使用,实现标签页与历史文件的一一对应。
内容的提问来源于stack exchange,提问作者Michael Wilson
相关产品推荐
相关产品推荐

