我调用了“shell”,它正确运行了 cmd.exe,并且运行正常。
但是,当我从该 shell 中运行 bash 时,每个命令都会出现错误
Microsoft Windows [Version 10.0.22000.739] (c) Microsoft Corporation.
All rights reserved.
c:\tools\Emacs\emacs-28.1>bash
bash
ll
bash: line 1: $'ll\r': command not found
bash: line 2: $'\r': command not found
我输入的第一个命令是ll
。从错误输出中,我们可以看到我的“ ”后面添加了一个“\r” ll
。
我输入的第二个命令是一个简单的 ENTER。从错误输出中,我们可以看到我的“ENTER”后面添加了一个“\r”。
emacs 之外:当我从 cmd.exe shell 调用 bash 时,一切都按预期工作。
bash 来自 cygwin 64 位,如果这有帮助的话,我使用的是 Windows 11 专业版。emacs 是为 Windows 原生(不是 cygwin 或 WSL)构建的,来自http://gnu.bardia.tech/gnu/emacs/windows/emacs-28/emacs-28.1-installer.exe。
我该如何修复这个问题?
答案1
可能原因:
该终端\r\n
在行尾发送 CR+LF(“” Windows/DOS/...),而
Bash 仅期望 LF(例如 Linux 约定)。
看看你是否可以说服 Cygwin-Bash 过滤掉\r
- 我不知道这是否可能。
其他选择;让 emacs 启动更“标准”的终端;例如rxvt
从 Cygwin。