Если я опущу суффикс «.cmd» в команде, она откроется в новом окне. Почему это? Что вызывает открытие нового окна?
В Powershell 5 и Powershell Core 7 первое из следующего вызывает открытие нового окна, а остальные три показать результаты в том же окне:
& 'C:\some_path\node_modules\.bin\ava' 'help'
& '.\node_modules\.bin\ava' 'help'
(использовалось cd C:\some_path
раньше) & 'C:\some_path\node_modules\.bin\ava.cmd' 'help'
& 'C:\some_path\node_modules\.bin\ava.ps1' 'help'
Между тем в cmd все три программы показывают свой вывод в одном окне, новое окно не открывается вообще:
-
C:\some_path\node_modules\.bin\ava help
.\node_modules\.bin\ava help
(использовалось cd C:\some_path
раньше) C:\some_path\.bin\ava help
Я использовал команду help только в качестве примера, наконец, мне нравится использовать ava debug --serial someFile.js
Версии ПО:
- Windows: Windows 10, версия 2004 (сборка 19041.388)
- Узел: v12.18.3
- AVA: 3.11.0
В каталоге .bin
находятся три соответствующих файла:
ava.cmd
@ECHO off
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
"%_prog%" "%dp0%\..\ava\cli.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b
ava.ps1
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
& "$basedir/node$exe" "$basedir/../ava/cli.js" $args
$ret=$LASTEXITCODE
} else {
& "node$exe" "$basedir/../ava/cli.js" $args
$ret=$LASTEXITCODE
}
exit $ret
ava
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../ava/cli.js" "$@"
ret=$?
else
node "$basedir/../ava/cli.js" "$@"
ret=$?
fi
exit $ret
Поскольку вызов выполняется кодом Visual Studio, отлаживающим сценарий AVA с предлагаемой конфигурацией , мое влияние на используемые команды ограничено.
$env:PATHEXT
равно .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
Если я переименую файл ava
в ava_2
, новое окно больше не будет открываться. Если создается пустой файл с именем ava
, команда & 'C:\some_path\node_modules\.bin\ava' 'help'
снова открывает новое окно.