脚本格式之殇——/bin/bash^M: 没有那个文件或目录

Linux下的bash脚本是不支持换行符\r的,如果运行从windows拷贝的文件,出现/bin/bash^M: 坏的解释器: 没有那个文件或目录这样的错误提示,不妨检查下文件格式是否有误。

如果是格式问题,有如下两种方法:

一、查找替换法

  • 第一步: cat -A filename查看‘\n\r空白符,\n会显示为$,而\r会显示为^M`。
  • 第二步: sed -i ‘s/\r$//‘filename替换掉全部\r字符。

二、VIM重置文档格式

  • 第一步: :set ff?查看文件格式,能看到fileformat=dos这样的提示。
  • 第二步::set ff=unix强制转换为unix格式。
  • 第三步::wq保存退出。

然后再次运行看看是否还出现同样的错误,如果仍有错,就该检查语法和相关命令是否正确了。

参考:

  • http://www.2cto.com/os/201310/252970.html
  • http://blog.csdn.net/yongan1006/article/details/8142527
时间: 2024-08-06 21:11:01

脚本格式之殇——/bin/bash^M: 没有那个文件或目录的相关文章

用脚本实现内核以/bin/bash为默认启动

一.脚本功能简介 首先在编写脚本前在虚拟机上添加一块10G的虚拟硬盘,本文磁盘名为/dev/sdb,你若不一样可以自行更改,同时定义个fdiskPartion函数来进行分区,在这用户要手动输入你的磁盘/dev/sdb,同时要保证此磁盘不能有任何分区,接着格式化两个硬盘并将其弄为ext4文件的系统,还要创建磁盘挂载的目录为/mnt/boot和/mnt/sysroot,创建玩目录后将/dev/sdb1挂载至/mnt/boot上,并进行写入grub文件,之后还要将宿主机上的内核文件复制到/mnt/bo

SHELL脚本--用于检测一个或者多个对象是文件或者目录

#!/bin/bash # # Judging the element is a file or a folder if [ $# -lt 1 ];then   echo "ERROE!! Usage: ckfile.sh ARGS1 [ARGS2...]"   exit 4 fi for i in `seq 1 $#` do if [ -f $1 ];then   echo $1 is a commom file elif [ -d $1 ];then   echo $1 is a 

执行yiic出现错误 /usr/bin/env: php: 没有那个文件或目录

开发环境用的是:linux系统+xampp安装包,导入 yii框架后,执行 yiic 命令时,提示:/usr/bin/env: php: 没有那个文件或目录. 解决方法:yiic是使用php脚本创建webapp的,启动yiic到时候,它会自动到/usr/bin/路径下找php执行文件.但是xampp默认安装在 /opt 目录下. 此时我们修改 yiic 文件即可,如下:

【问题】/usr/bin/env: php: 没有那个文件或目录

php不是默认安装的,在使用symfony创建新项目时,出现这个提示. [[email protected] html]# symfony demo /usr/bin/env: php: 没有那个文件或目录 解决方法是新增加一个php的软链接,指向到/usr/local/bin目录下.下面以我服务器上的demo举例: [[email protected] bin]# ln -s /app/php/bin/php /usr/local/bin/php 再次执行 symfony demo就正常了.

Shell脚本(脚本中的逻辑判断,逻辑判断表达式,判断文件和目录属性,case判断)

逻辑判断表达式: -gt = 大于    -lt = 小于    -ge = 大于等于   -le = 小于等于   -eq = 恒等于  -ne = 不等于 这里要注意空格 也可以用&&和||结合多个条件 例如1: [[email protected] shell]# cat if4.sh #/bin/bash a=5 if [ $a -gt 4 ] && [ $a -lt 6 ] then echo "4<a<6" else echo n

/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)

在Linux下编译cocos2d-x运行脚本的时候出现"/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)"这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' make-all-linux-project.sh即可 其中make-all-linux-project.sh为我的文件名,这里改成自己需要的即可 原因: 这个文件在Windows 下编辑过,在Window

Linux - Shell - #!/bin/bash

概述 简单解释一下 shell 脚本卡头的 #!/bin/bash 水一篇, 少一篇 背景 shell 脚本中的注释 通常是 以# 卡头的行 但是有时候执行 shell 的时候, 会有这种内容 #!/bin/bash 1. #!/bin/bash 这不是注释 他是有意义的 shell 脚本执行 场景 一个 脚本 由 shell 执行 !/bin/bash 作用 指定 shell 2. 尝试 场景1: bash 脚本: test01.sh #!/bin/bash echo 'hello' 执行 命

CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录.shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter.网上找了资料才知道如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A.如果你将这个脚本文件直接放到Li

[shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章. 转自:http://www.cnblogs.com/EasonJim/p/6850319.html 一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径. $ cat /etc/shells可以查看系统支持的shell格式 其实第一句的#!是对脚