我在 windows
中有一些 python 文件,我通过 samba 将它们传输到我的 gentoo
。
我检查他们的模式是可执行的,我使用./xxx.py
运行它,但得到一个错误:
: No such file or directory
我很苦恼,它不提示什么文件不在这里。
但是当我使用python xxx.py
时,它可以以正确的方式运行。
然后我在vim中使用set ff
检查CR字符,发现它是dos
,然后我使用set ff=unix
设置它,现在它可以使用 ./xxx.py
但不知道为什么在ff=dos
时可以使用python xxx.py
?
最佳答案
Windows 行结尾是 CRLF,或 \r\n
。
Unix 简单地使用 \n
。
当操作系统读取您的 shebang 行时,它会看到 #!/usr/bin/python\r
。它无法运行此命令。
从 unix shell 中查看此行为的一种简单方法是 $(echo -e 'python\r')
(它尝试运行 python\r
作为一个命令)。此输出也将类似于 : command not found
。
Windows 下的许多高级代码编辑器都支持使用 unix 行尾进行 native 保存。
关于dos 和 unix 下的 python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669092/