Windows和Linux/Unix文件格式bug:/usr/bin/env: ‘python\r’: No such file or directory
相信大家在频繁切换windows和linux系统时,都会有脚本运行bug的体验,下面我根据查到的资料和实验,给大家具体说明一下。
这其中的bug原因就是windows下和linux下的文件格式不一样造成的:
转载自:https://www.cnblogs.com/HeDaoYiWenZi/articles/2855965.html
windows下的python脚本在linux下运行时,会出现“/usr/bin/env: ‘python\r’: No such file or directory”的错误,提示没有“python\r”这个文件或文件夹。你会很奇怪问什么我明明没有“\r”为什么会多出来呢?这就是windows和linux的文件格式差别导致的。
在windows中文件的回车换行有两个字符组成,分别是\r和\n,对应ascii码是13和10,而在linux中换行只有一个字符\n,ascii码是10。当windows中的文件在linux下运行时,linux系统识别不了"\r\n"为回车换行,而是识别成"\r"加换行,这就导致在运行脚本时出现“python\r”情况。
下面为大家提供解决方案:
在linux下通过vim编辑器打开windows下的这个脚本,
执行命令::set ff
可以查看文件格式,你会看到 fileformat=dos
,也就是windows下的格式,
再执行命令::set ff=unix
这时候就把文件格式转换成unix(如果不放心可以执行上面:set ff
进行检查),
这样就可以在linux下运行脚本了。
下面根据我的实验为大家解释一下文件是从什么时候决定是哪种格式的:
在脚本文件准备好之前经历了两个阶段,一个是创建,一个是输入。实际上文件的格式是在第一次输入的时候才被确定的。无论你是在windows还是linux下创建,只要你在linux下第一次输入,就是unix格式;在windows下第一次输入,那么格式就是dos。之后不论在哪个系统编辑器正常输入,都不会变了(当然除了像vim这种更改文件格式的操作)。