PowerShell shell 脚本 运行 window 自动关闭:启动进程与 ./
PowerShell shell script running window auto close: Start-Process vs ./
假设我在当前目录中有一个名为 myscript.sh
的 shell 脚本。
Start-Process myscript.sh
和 ./myscript.sh
都会 运行 新的脚本 bash window,但在行为上有 1 个主要差异:
如果我在脚本结束后选择 ./myscript.sh
,window 会自动关闭,我没有机会看到输出,而 Start-Process
不会关闭新的 window.
我想知道为什么,如果有办法改变它,因为 ./
最终比 Start-Process
更短更容易调用。
编辑:
下面是运行ning脚本后PS打开的bash。我相信这是一个gitbash?
enter image description here
编辑:
问题解决了,或者实际上它自己解决了...
PowerShell 本身无法执行 .sh
脚本,因此它依赖于系统的 GUI shell(即所谓的 Windows shell)来告诉它如何打开此类文件。
您的系统似乎配置为使用 Git Bash 打开(执行)此类文件,随附的 Bash 版本a Git installation on Windows.
但是,调用 ./myscript.sh
或 Start-Process ./myscript.sh
之间应该 没有 区别:两者都应该 异步 运行 new window 中带有 Bash 的脚本,即 MINGW64 控制台 window.
请注意,运行此类脚本的唯一方法是在单独的window中,因为Git附带的Bash不能在运行中常规控制台 windows.
通常,任何扩展名未在 $env:PATHEXT
中列为可直接执行的文件都将 运行 在新的(可能是 GUI)window.
中
A Bash shell 使用要执行的脚本的路径调用 在要执行的脚本终止后自动退出 ,这会关闭 window 它 运行 也在里面。
为了防止window 自动关闭,您可以在脚本执行后使用等待按键的命令;例如:
& $env:ProgramFiles\Git\git-bash.exe -c './myscript.sh; read -n 1 -p \"Press a key to exit.\"'
然而,这仍然会导致异步执行;要获得 同步 执行 - 即等待 Bash window 关闭,您必须将上述内容与 Start-Process -Wait
:
Start-Process -Wait $env:ProgramFiles\Git\git-bash.exe -Args '-c "./myscript.sh; read -n 1 -p \"Press a key to exit.\""'
假设我在当前目录中有一个名为 myscript.sh
的 shell 脚本。
Start-Process myscript.sh
和 ./myscript.sh
都会 运行 新的脚本 bash window,但在行为上有 1 个主要差异:
如果我在脚本结束后选择 ./myscript.sh
,window 会自动关闭,我没有机会看到输出,而 Start-Process
不会关闭新的 window.
我想知道为什么,如果有办法改变它,因为 ./
最终比 Start-Process
更短更容易调用。
编辑: 下面是运行ning脚本后PS打开的bash。我相信这是一个gitbash? enter image description here
编辑: 问题解决了,或者实际上它自己解决了...
PowerShell 本身无法执行 .sh
脚本,因此它依赖于系统的 GUI shell(即所谓的 Windows shell)来告诉它如何打开此类文件。
您的系统似乎配置为使用 Git Bash 打开(执行)此类文件,随附的 Bash 版本a Git installation on Windows.
但是,调用 ./myscript.sh
或 Start-Process ./myscript.sh
之间应该 没有 区别:两者都应该 异步 运行 new window 中带有 Bash 的脚本,即 MINGW64 控制台 window.
请注意,运行此类脚本的唯一方法是在单独的window中,因为Git附带的Bash不能在运行中常规控制台 windows.
通常,任何扩展名未在 $env:PATHEXT
中列为可直接执行的文件都将 运行 在新的(可能是 GUI)window.
A Bash shell 使用要执行的脚本的路径调用 在要执行的脚本终止后自动退出 ,这会关闭 window 它 运行 也在里面。
为了防止window 自动关闭,您可以在脚本执行后使用等待按键的命令;例如:
& $env:ProgramFiles\Git\git-bash.exe -c './myscript.sh; read -n 1 -p \"Press a key to exit.\"'
然而,这仍然会导致异步执行;要获得 同步 执行 - 即等待 Bash window 关闭,您必须将上述内容与 Start-Process -Wait
:
Start-Process -Wait $env:ProgramFiles\Git\git-bash.exe -Args '-c "./myscript.sh; read -n 1 -p \"Press a key to exit.\""'