WT_SESSION
,它被设置为v4 UUID:https://github.com/microsoft/terminal/issues/1040
如果你想快速检查,可以使用以下方法:!!process.env.WT_SESSION
你还可以使用更精细的方法,利用is-uuid
、is-wsl
和process.platform
:
import isUUID from 'is-uuid';
import isWsl from 'is-wsl';
const isWindowsTerminal = (process.platform === "win32" || isWsl) && isUUID.v4(process.env.WT_SESSION);
WT_SESSION
在 Windows 11 上并不总是设置。 - cuzicmd
或者运行启动另一个终端模拟器的GUI程序,该环境变量将被继承。powershell.exe
是在终端应用程序之外启动的,然后稍后附加到它上面。
(来源:https://github.com/microsoft/terminal/issues/11057)WT_SESSION
在使用 Visual Studio 2022 调试控制台应用时似乎未被设置。 - tig我更喜欢这种方法(在PowerShell中)来自https://github.com/microsoft/terminal/issues/6269:
function IsWindowsTerminal ($childProcess) {
if (!$childProcess) {
return $false
} elseif ($childProcess.ProcessName -eq 'WindowsTerminal') {
return $true
} else {
return IsWindowsTerminal -childProcess $childProcess.Parent
}
}
我随后会在我的个人资料中使用它来启用例如oh-my-posh。
$IsWindowsTerminal = IsWindowsTerminal -childProcess (Get-Process -Id $PID)
if($IsWindowsTerminal) {
oh-my-posh --init --shell pwsh --config $HOME\Documents\mytheme.omp.json | Invoke-Expression
}
false
。(Get-Process -Id $PID).ProcessName
是“powershell”,而$childProcess没有Parent
属性。因此,在第一次运行时它会跳到else语句,然后在第二次运行时会跳到!$childProcess
语句。 - Dan Atkinson
process.env
的输出是什么? - evolutionxboxWT_SESSION
是当前的解决方案:https://github.com/microsoft/terminal/issues/1040 - Richie Bendall