5

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

在 Windows 终端中运行的 Windows Powershell

相比:

Windows Powershell

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

4

2 回答 2

7

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

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

!!process.env.WT_SESSION

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);
于 2020-01-14T12:48:57.990 回答
0

我更喜欢https://github.com/microsoft/terminal/issues/6269中的这种方法(在PowerShell中):

function IsWindowsTerminal ($childProcess) {
    if (!$childProcess) {
        return $false
    } elseif ($childProcess.ProcessName -eq 'WindowsTerminal') {
        return $true
    } else {
        return IsWindowsTerminal -childProcess $childProcess.Parent
    }
}

然后我在我的个人资料中使用它来打开例如oh-my-psh

$IsWindowsTerminal = IsWindowsTerminal -childProcess (Get-Process -Id $PID)
if($IsWindowsTerminal) {
    oh-my-posh --init --shell pwsh --config $HOME\Documents\mytheme.omp.json | Invoke-Expression
}
于 2021-12-10T06:40:45.927 回答