You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10 MINGW64 Bash下文件创建与复制异常:是Bug还是特性?如何禁用?

问题描述

在Windows 10的MINGW64 Bash环境下,当目录里有hello.exe可执行文件时,会出现以下现象:

  1. 执行ls能看到绿色的hello.exe*(星号表示文件可执行)
  2. 特意用ls hello查询时,结果显示为hello*,自动省略了.exe扩展名
  3. 尝试创建无扩展名的hello文件时,直接报错权限拒绝:
$ echo hello > hello
bash: hello: Permission denied
  1. 递归复制包含hello/文件夹和hello.exe的目录时,如果先复制hello.exe再复制hello/,会提示无法覆盖:
cp: cannot overwrite non-directory './hello' with directory './hello'

请问这是Bug还是特性?如果是特性,怎么禁用?


解答

这是MINGW64的特性,专门为兼容Windows用户不用输入.exe扩展名就能运行程序的习惯设计,核心是两个机制:

  • Shell查找可执行命令时,会自动补全.exe后缀,所以输入hello实际运行的是hello.exe
  • ls这类工具被修改过,会把.exe文件显示成无扩展名的“虚拟别名”,让操作逻辑更贴近Windows平台

禁用方法

可以通过设置环境变量关闭这些兼容特性:

  1. 临时生效:在当前Shell会话中直接执行
export MSYS2_ARG_CONV_EXCL="*"
export EXEC_SUFFIXES=()
  1. 永久生效:编辑~/.bashrc文件,将上述两行命令添加进去,保存后重启Shell即可

如果只是需要查看真实文件名,无需全局禁用特性,给ls添加参数就能显示原始文件名:

ls --literal

内容的提问来源于stack exchange,提问作者AbbeD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:50:43