bash - 当我在获取包含选项“set -e”的 bash 脚本后执行 windows 命令时,WSL 突然关闭
问题描述
重现步骤。
请注意,我使用的是 WSL (Ubuntu 18) 版本 1. Windows 版本 1909 (OS Build 18363.900)。
- 创建一个
foo.sh
包含选项的虚拟 bash 脚本set -e
。
#!/bin/bash
set -e
pwd
- 在 WSL 中执行以下命令。
$ source foo.sh
$ explorer.exe .
在我执行第二个命令后,explorer.exe .
WSL 突然关闭。
解决方案
我刚刚试了一下,确实:当我运行explorer
时,资源管理器 Windows 在后台打开,启动资源管理器的进程返回退出代码 1。我不知道为什么微软以其无限的智慧决定以这种方式实现它。
当然,拥有set -e
交互式外壳是疯狂的。我建议取消它。如果该场景不是交互式外壳(这在您的问题中并不完全清楚),但是您从脚本内部运行命令,并且您确实想坚持使用-e
,请使用以下命令启动资源管理器
explorer.exe || true
保持外壳运行。
推荐阅读
- ruby-on-rails - 如何在没有测试用例的情况下升级 Rails
- c - 使用 goto 返回不同输出的代码
- php - php将数组自定义为给定的特定格式
- php - 访问包含值的 foreach 数组时出现问题
- freeradius - freeradius 中的策略未运行
- ionic-framework - 找不到模块'@ionic-native/power-management/ngx'
- asp.net - 抓取:带有 cURL 的 SSL_ERROR_SYSCALL。适用于 Chrome/Firefox
- javascript - 在 React.js 中为内联 CSS 使用外部字体
- c# - 如何使用带有“webmethod”端点的全局过滤器?
- android - Git 存储库突然不再更新,即使它在 Android Studio 端提交/推送正常