当我在获取包含选项"set -e"的 bash 脚本后执行 windows 命令时,WSL 突然关闭



重现的步骤。

请注意,我使用的是 WSL (Ubuntu 18( 版本 1。 Windows 版本 1909(操作系统内部版本 18363.900(。

  1. 创建一个包含选项set -e的虚拟 bash 脚本foo.sh
#!/bin/bash
set -e
pwd
  1. >在 WSL 中执行以下命令。
$ source foo.sh
$ explorer.exe .

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

我刚刚尝试过,确实:当我运行explorer时,资源管理器Windows在后台打开,启动资源管理器的进程返回退出代码1。我不知道为什么Microsoft以他们无穷的智慧决定以这种方式实施它。

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

explorer.exe || true

以保持外壳运行。

最新更新