[英]Shebang executable not found because of UTF-8 BOM (Byte Order Mark)
由于某种原因,我的一个脚本中的 shebang 不起作用:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Hello World"
当我执行这个文件时,我收到一个错误
% ./test.py
./test.py: 1: #!/usr/bin/env: not found
我的/usr/bin/
目录的内容没有问题: env
和python
都在,执行权限正确。
这是由于 Unix 和 Linux 处理 shebang 的方式。 #!
必须是文件中的前两个字节。 如果您有 BOM,那么这不再是正确的,因此会出现错误。
请注意,从 python 解释器的角度来看,放置 BOM 完全没有用,因为# -*- coding: utf-8 -*-
已经告诉 python 编码。
AFAIK BOM 通常不与 utf-8 一起使用。 它用于 UTF-16 et similia 以指定字节顺序。 如果编辑器采用错误的编码,您应该能够使用正确的编码显式打开文件。
问题的原因是我的文件是使用带有 BOM(字节顺序标记)的 UTF8编码的。
删除 BOM,即使用没有 BOM 的 UTF8 编码文件解决了这个问题。
注意:对于 Notepad++ 用户,“没有 BOM 的 UTF8”在编辑器中也被称为(奇怪的)“ANSI as UTF-8”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.