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