首页 > 解决方案 > 当我在获取包含选项“set -e”的 bash 脚本后执行 windows 命令时,WSL 突然关闭

问题描述

重现步骤。

请注意,我使用的是 WSL (Ubuntu 18) 版本 1. Windows 版本 1909 (OS Build 18363.900)。

  1. 创建一个foo.sh包含选项的虚拟 bash 脚本set -e
#!/bin/bash

set -e

pwd
  1. 在 WSL 中执行以下命令。
$ source foo.sh
$ explorer.exe .

在我执行第二个命令后,explorer.exe .WSL 突然关闭。

标签: bashshellwindows-subsystem-for-linux

解决方案


我刚刚试了一下,确实:当我运行explorer时,资源管理器 Windows 在后台打开,启动资源管理器的进程返回退出代码 1。我不知道为什么微软以其无限的智慧决定以这种方式实现它。

当然,拥有set -e交互式外壳是疯狂的。我建议取消它。如果该场景不是交互式外壳(这在您的问题中并不完全清楚),但是您从脚本内部运行命令,并且您确实想坚持使用-e,请使用以下命令启动资源管理器

explorer.exe || true

保持外壳运行。


推荐阅读