For the better part of the year I have been having some issues with Windows Terminal that in combination with Powershell (pwsh) which has bothered me quite a lot. It is quite specific issue since it seems occurs when only when Powershell Core is installed via scoop.

The issue#

The issue happens when you want to abort/close a running application/script by pressing Ctrl-C. This causes the whole powershell-terminal to exit, leaving me with a non-working terminal. Example:

❯ ping google.com

Pinging google.com [216.58.211.142] with 32 bytes of data:
Reply from 216.58.211.142: bytes=32 time=64ms TTL=114

Ping statistics for 216.58.211.142:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 64ms, Maximum = 64ms, Average = 64ms
Control-C

[process exited with code 3221225786]

This is really frustrating because then you have to have to open a new terminal tab to continue to work and all extra work that comes with that.

Workaround/solution#

Couple of days ago I finally found why this is happening and a workaround/solution for the problem in a comment for this issue on the powershells github-page.

The problem seems to be that scoop installs shortcuts for all applications as Shims, see this github page for more information. I.e. a small applications that executes another application based on configuration.

And when you press Ctrl-C in windows-terminal you exit the shim-application and not the powershell application and that’s why the whole process is shutdown.

The workaround is to change the settings in windows-terminal for pwsh by adding the path directly to pwsh.exe instead of it using the shim pwsh.exe:

    "commandline": "%USERPROFILE%\\scoop\\apps\\pwsh\\current\\pwsh.exe"

The whole powershell core block in my Windows Terminal settings.

Before:

{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "hidden": false,
    "name": "PowerShell",
    "source": "Windows.Terminal.PowershellCore"
}

After:

{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "hidden": false,
    "name": "PowerShell",
    "source": "Windows.Terminal.PowershellCore",
    "commandline": "%USERPROFILE%\\scoop\\apps\\pwsh\\current\\pwsh.exe"
}

Now Ctrl-C works just fine.

❯ ping google.com

Pinging google.com [216.58.215.110] with 32 bytes of data:
Reply from 216.58.215.110: bytes=32 time=51ms TTL=115

Ping statistics for 216.58.215.110:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 51ms, Maximum = 51ms, Average = 51ms
Control-C

Yaay, no more closing down tabs and re-opening them again.