2024-05-21 15:18:08 发布
网友
出于某种原因,我的一个脚本中的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两个目录,它们具有正确的执行权限。
/usr/bin/
env
python
这是因为Unix和Linux是如何处理shebang的。^{}必须是文件中的前两个字节。如果你有一个BOM,那么这不再是真的,因此出现了错误。
注意,从python解释器的角度来看,放置BOM是完全无用的,因为# -*- coding: utf-8 -*-已经告诉python编码。
# -*- coding: utf-8 -*-
AFAIK BOM通常与utf-8一起使用。它用于UTF-16和similia,以指定字节顺序。如果编辑器假定使用了错误的编码,则应该能够使用正确的编码显式打开文件。
问题的原因是,我的文件是使用带BOM(字节顺序标记)的UTF8编码的。
删除BOM,即使用UTF8编码文件而不使用BOM,解决了这个问题。
注意:对于Notepad++用户,“UTF8不带BOM”在编辑器中也被称为(奇怪的)“ANSI as UTF-8”。
这是因为Unix和Linux是如何处理shebang的。^{} 必须是文件中的前两个字节。如果你有一个BOM,那么这不再是真的,因此出现了错误。
注意,从python解释器的角度来看,放置BOM是完全无用的,因为
# -*- coding: utf-8 -*-
已经告诉python编码。AFAIK BOM通常与utf-8一起使用。它用于UTF-16和similia,以指定字节顺序。如果编辑器假定使用了错误的编码,则应该能够使用正确的编码显式打开文件。
问题的原因是,我的文件是使用带BOM(字节顺序标记)的UTF8编码的。
删除BOM,即使用UTF8编码文件而不使用BOM,解决了这个问题。
注意:对于Notepad++用户,“UTF8不带BOM”在编辑器中也被称为(奇怪的)“ANSI as UTF-8”。
相关问题 更多 >
编程相关推荐