重现的步骤。
请注意,我使用的是 WSL (Ubuntu 18( 版本 1。 Windows 版本 1909(操作系统内部版本 18363.900(。
- 创建一个包含选项
set -e
的虚拟 bash 脚本foo.sh
。
#!/bin/bash
set -e
pwd
- >在 WSL 中执行以下命令。
$ source foo.sh
$ explorer.exe .
执行第二个命令后explorer.exe .
WSL 突然关闭。
我刚刚尝试过,确实:当我运行explorer
时,资源管理器Windows在后台打开,启动资源管理器的进程返回退出代码1。我不知道为什么Microsoft以他们无穷的智慧决定以这种方式实施它。
当然,在交互式外壳中拥有set -e
是疯狂的。我建议取消设置它。如果场景不是交互式 shell(从您的问题中并不完全清楚(,但您从脚本内部运行命令,并且确实想坚持使用-e
,启动资源管理器
explorer.exe || true
以保持外壳运行。