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

场景重现

剧情需要,在Windows7新建了个文本,然后写了个Shell给同事,然后他拷贝到Ubuntu14.04上去执行, 结果就出现如下异常(手机拍的,抽象了点,勿介):

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

求解路上

刚刚开始我以为是他电脑解释器不一致的原因, 然后把解释器声明换成了如下2种都试了下: #!/bin/sh #一般这么写的比较常见

#!/bin/bash #第二种是这个,当然还有其他,具体不多说

#带过:这里很多跟我一样的新手非常容易忘了bin前面的/符号...导致异常

然后执行,还是一样的错误。 同时在他电脑上直接在Terminal执行同样的命令是没啥问题的, 想想好像漏了什么。。。

真相大白

据说,在Windows下,默认的文件编译,每一行的结尾是\n\r,但是在Linux下文件的结尾是\n。 因此在Windows环境下编辑过的文件在Linux下打开看的时候每一行的结尾就会多出来一个字符\r。 常规只是看看文件的情况下,一般没啥影响,但是执行命令解释器解析的时候,就会出现本文中的异常。

解决办法

  • 我反正是直接在Ubuntu下新建一个.sh文件,把命令输入,执行即可.
  • 话说有什么办法能直接转换么?

转载于:https://my.oschina.net/taadis/blog/1592617

根据引用和引用,出现`usr/bin/env: 没有那个文件目录`的错误提示通常是因为解释器路径设置不正确或解释器文件不存在。有几种方法可以尝试解决这个问题: 方法1:检查解释器路径 请确保在脚本的开头声明的解释器路径是正确的。在引用中提到,正确的解释器路径应该是`#! /usr/bin/env python`。请确保路径中的斜杠`/`没有遗漏。 方法2:检查解释器是否存在 请确保所使用的解释器文件存在于指定的路径中。你可以在终端中运行`which python`命令来检查解释器的路径是否正确。 方法3:进行编译 如果你使用的是ROS程序包,在运行之前,你可能需要先进行编译。你可以在工作空间下运行`catkin_make`命令来编译程序包,然后再尝试运行程序。 方法4:添加CMakeLists.txt声明 在引用中提到,你可以检查对应功能包中的CMakeLists.txt文件是否包含了正确的声明。你可以通过添加以下声明来确保正确安装Python脚本: ``` catkin_install_python(PROGRAMS scripts/talker.py scripts/listener.py(所运行的程序名) DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) ``` 请记得修改程序名称以匹配你实际使用的脚本名称。 方法5:更改解释器版本 如果你使用的是noetic版本的ROS或者你已经安装了Python 3,你可以尝试将脚本开头的解释器声明`#! /usr/bin/env python`改为`#! /usr/bin/env python3`。 总结以上方法,你可以按照以下步骤来解决`usr/bin/env: 没有那个文件目录`的错误提示: 1. 检查脚本开头的解释器路径是否正确,确保斜杠没有遗漏。 2. 确认解释器文件存在于指定路径中,可以通过`which python`命令来检查。 3. 如果是ROS程序包,先进行编译,使用`catkin_make`命令。 4. 检查对应功能包中的CMakeLists.txt文件是否包含了正确的声明。 5. 如果使用的是noetic版本的ROS或者已经安装了Python 3,尝试将解释器声明改为`#! /usr/bin/env python3`。 希望以上方法能帮助你解决问题。如果问题仍然存在,请提供更多的详细信息以便我们能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值