出于某种原因,当我在 linux 上输入我习惯的命令时,它可以完美地工作,就像它在 bash 中一样......但在 eshell 中,它不起作用。
我将问题缩小到一个微不足道的小样本,如下所示:
$ du
c:/Program: command not found
$ which bash
c:/Program Files (x86)/Git/bin/bash.exe
我如何让它工作?(du 是默认的任何东西... 它是在 elisp 中实现的,我没有在那里做任何不寻常的更改,也就是说,它是 'em-unix.el' 中编译的 lisp 函数)
我本来希望出现类似"您已使用 1.3 GiB 磁盘空间"的内容,而不是该命令未找到错误。
它不使用bash.exe
,但它可以使用du.exe
,如果存在。
在我的系统上:
c: gutov $ which bash.exe
which: no bash.exe in ...
c: gutov $ which du.exe
h:/Apps/System/gnuwin32/bin/du.exe
从您的错误消息中,我可以判断它调用某些命令并失败,因为它没有正确引用可执行文件的路径(包含空格)。也许你应该做M-x report-emacs-bug
.
总的来说,我建议:
1) 卸载 Git 并重新安装它,当系统询问您的 PATH 环境时,选择第二个选项("从 Windows 命令提示符运行 Git")。这将从 PATH 中删除随它一起打包的 unix 工具。
2)安装在一些没有空格的目录中,并从GnuWin32项目或Eli Zaretski的端口添加到PATH中Unix工具。后者总体上包含较少的软件包,但它具有 更快的find
,例如。你可以混合它们。
或者,也许你可以侥幸将 Git 重新安装到没有空格的目录中。