问题解决: 解释器错误: 没有那个文件或目录

Posted 车子 chezi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题解决: 解释器错误: 没有那个文件或目录相关的知识,希望对你有一定的参考价值。

执行一个我写的 perl 脚本,命令行报错:

/usr/bin/perl^M: 解释器错误: 没有那个文件或目录

分析:
UNIX和Linux使用“\\n”换行,而Windows用“\\r\\n”(不是\\n\\r,已验证).
推测脚本文件在windows下编辑过。用 sed 命令把每行末尾的 \\r 去掉。

解决:
sed -i 's/\\r$//' filename

解释一下,-i 表示 edit files in place,直接修改原来的文本
s/a/b/ 表示把 a 替换成 b
$表示“结束位置”
所以上面命令的意思是:如果一行以 \\r 结尾,就把 \\r 替换为空,也就是去掉它。

有人问,不是以 \\r\\n 结尾吗?

使用 standard sed,您将看不到换行符。这是因为 sed 逐行读取,因此在 sed 模式空间中,当前行文本的末尾没有换行符。换句话说,sed 读取以换行符分隔的数据,并且分隔符不是 sed 脚本所见内容的一部分。

所以,\\n 作为分隔符了,所以每行的末尾就是 \\r


参考资料
如何使用sed检测行尾

以上是关于问题解决: 解释器错误: 没有那个文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

/bin/bash^M: 坏的解释器: 没有那个文件或目录

/bin/sh^M:解释器错误:没有那个文件或目录

错误:readline/readline.h:没有那个文件或目录解决方法

/bin/bash^M: 坏的解释器: 没有那个文件或目录

解决办法:dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录

解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”