我正在开发一个库,该库需要标识正在运行的终端仿真器,以便输出特定于仿真器的转义代码序列。
例如, iTerm 2 uses以下专有序列:
ESC ] 50 ; CurrentDir=/path/to/dir BEL
ConEmu uses以下专有序列:
ESC ] 9 ; 9 ; C:\path\to\dir BEL
现在,我需要查询终端(使用环境变量或使用转义序列)以输出正确的终端特定代码。
如何可靠地检测并识别正在运行的终端模拟器?
答案 0 :(得分:0)
答案取决于...
好吧,您可以尝试检查环境变量,例如ConEmuServerPID。但这可能并不可靠,因为 a)当您的进程实际上在ConEmu之外运行时,该变量可能以某种方式从父进程继承 b)在某些情况下,例如当您在某处ssh时,可能未设置该变量
您可以使用ESC [ > c
个报告ESC > 0 ; 136 ; 0 c
请求终端“版本”。但是,当然,136
并不是ConEmu的保证。
此外,您可以使用ANSI sequence执行IsConEmu GuiMacro。但是,很可能在ssh-ing时无法检查结果。
您可以致电ConEmuC.exe -IsConEmu,但不能在ssh中打电话。