如何检测是否在新的 Windows 终端中运行?

Ric*_*all 9 javascript windows terminal node.js windows-terminal

Windows 终端预览版即将推出的一个功能是它具有完整的表情符号支持:

在 Windows 终端中运行的 Windows Powershell

相比:

Windows Powershell

在 Node.js 中,如何检测我是否在 Windows 终端(而不是其“裸”变体)包装的终端中运行?是否有我可以提取的环境变量或可以进行同步测试?

Ric*_*all 9

您可以检查WT_SESSION设置为 v4 UUID 的环境变量: https: //github.com/microsoft/terminal/issues/1040

如果您正在寻找一种快速而肮脏的检查方法,这应该可行:

!!process.env.WT_SESSION
Run Code Online (Sandbox Code Playgroud)

您还可以使用一种更复杂的方法,利用is-uuid,is-wslprocess.platform

import isUUID from 'is-uuid';
import isWsl from 'is-wsl';

const isWindowsTerminal = (process.platform === "win32" || isWsl) && isUUID.v4(process.env.WT_SESSION);
Run Code Online (Sandbox Code Playgroud)

  • 注意:Windows 11 上并不总是设置“WT_SESSION” (2认同)