这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
今天把一个Python的代码通过Samba从Windows传到Gentoo里,看到已经有x权限了,就直接通过./xxx.py
来运行程序,结果报错:
: No such file or directory
但是我又通过python xxx.py
来测试,结果又可以正常运行
当时觉得这个问题很奇怪,冒号前面啥也没有。
于是查了下文件属性:
$ file xxx.py
xxx.py: Python script, ASCII text executable, with CRLF line terminators
果然就提示有问题了。
于是vim打开程序,设置fileformat:
: set ff=unix
于是就可以通过./xxx.py运行了。
但是还有一个比较纳闷的事,就是为何用./xxx.py
无法执行,但是用python xxx.py
却可以,我在stackoverflow上提问了。因为./xxx.py
是通过代码第一行指定的解释器来执行,但是这里相当于:
!/usr/bin/env python^M
肯定就无法找到相关解释器来执行代码了。
其实我的代码首行如果不写成:!/usr/bin/env python , 而改成:!/usr/bin/python,则提示比较清楚了:
bash: ./xxx.py: /usr/bin/python^M: bad interpreter: No such file or directory
在stackoverflow上的提问帖传送门:python-file-in-dos-and-unix