检测使用的终端应用程序(iTerm2)

检测使用的终端应用程序(iTerm2)

可以检测正在使用的终端应用程序吗?我想要实际的应用程序,而不是问题中的 TERM 环境。

我想检测 iTerm 2 / Terminal.app,以便我可以设置 OSX 特定的键盘映射,否则就是 PC。

(看ALT+箭头在 zsh 和 iTerm2 中的单词之间移动

答案1

您需要通过 SSH 转发本地环境变量,如下所述:

http://groups.google.com/group/iterm2-discuss/msg/7cc214c487d31bc8

答案2

我编写了以下脚本:

#!/bin/bash

pid=$$ # Current PID
ps -f $$ | head -n 1 # Show the header of ps
while [ $pid -gt 0 ]; do # No more parent when we reach 0 (the kernel)
        ps -f $pid | tail -n +2 # ps current pid and remove header
        pid=$(ps -o ppid $pid|tail -n 1) # Get parent pid
done

它获取当前 PID($$在 bash 中)并递归获取父 PID,直到我们达到 0(即内核),ps -f沿途打印输出(以及开始的标题,带有ps -f | head -n 1

我能想到的两个限制:

  1. 如果通过 SSH 运行,父级将是sshd而不是图形终端应用程序。
  2. 如果在单独的脚本中执行,它也会打印该脚本。

然而,您应该能够grep输出它并在本地运行时检测其中一个父进程是否是 iTerm.app 或 Terminal.app。

相关内容