我是 Cygwin 的新手,我刚刚安装了它并尝试设置一些简单的环境变量。但是,当我打开命令 shell 时,收到错误“#357�� 命令未找到”
我发现一篇文章讨论了问题是什么以及如何“发现”隐藏的坏性格: http://web.archive.org/web/20100612055709/http://mblog.lib.umich.edu/DataDiscussions/archives/2010/01/index.html
e.g. $ od -c c:\\Users\\me\\.bashrc
但我不知道如何通过删除字符来解决问题(我使用 od 命令验证了这是我的 .bashrc 文件中的问题)。我尝试将 Notepad++ 中的首选项视图更改为 UTF-8 和 ANSI,但无济于事,但文件根本没有改变。
如有任何帮助,我们将不胜感激...
据我所知,在Notepad++中保存为UTF-8和Cygwin的文件的一个常见问题是Notepad++默认使用字节顺序标记保存UTF-8编码的文件。这个 BOM 字符与 Cygwin 等类 UNIX 环境不太兼容。
如果这些文件中需要unicode字符,那么你可以尝试在Notepad++中使用“UTF-8 without BOM”编码,否则你可以使用ANSI或其他默认不使用BOM的编码。
除了编码之外,请确保使用 unix (LF) 换行符保存文件。
在将文件输入 cygwin bash 之前,您可以先进行 dos2unix 转换,以处理可能的冲突,例如 CR LF。打开bash
姓名@主机~ $ dos2unix your_file.sh
在 Linux 中剥离这些的一种方法是使用 vi。如果您运行
vi <filename>
,然后在 vi 中使用 ed 命令 :se fileencoding=ASCII
(或 :set fileencoding=ASCII
),这将删除奇怪的字符。
您可以通过保存文件然后在文件上运行
od -c
来确认这一点。
之前:
$ od -c changes.sql | head
0000000 357 273 277 I N S E R T I N T O `
之后:
$ od -c changes.sql | head
0000000 I N S E R T I N T O ` c o n
看起来如果我将 encoding 从 UTF-8 更改为 ANSI(不是视图首选项),文件将更新并且特殊字符消失,从而修复“未找到命令”问题。万岁!
由于您在 Cygwin 之外编辑了 .bashrc 并使用了 Windows 编辑器,因此编辑器可能会弄乱您的换行符(即 CR、R 等),您可以告诉 Notepad++ 显示隐藏字符。我想你可以在它的设置中找到它。更改字符集是一回事,但能够看到隐藏的字符是另一回事。
这篇文章提到了一些可用于将文本文件从一种标准转换为另一种标准的程序。尝试在文件上使用 dos2unix(在 cygwin 命令行中)。