/bin/bash^M: bad interpreter: No such file or directory 解决方法?!

阿炭 1月前  服务器   386

昨天晚上加了个数据库自动备份的FTP脚本:backup.sh,设置了凌晨6点自动备份数据至某个FTP空间,结果今天早上来的时候发现FTP上根本没有备份的数据库文件,难道是脚本有问题?于是执行测试了一下,结果还真的执行失败,提示-bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory,这就怪了,这个backup.sh明明就在home目录里:

[root@hqw home]# ll

total 24

-rwxr-xr-x 1 root root 1670 Mar 11 20:29 backup.sh

drwxr-xr-x 2 root root 4096 Mar 11 19:52 cert

drwx------ 2 www  www  4096 Mar  8 17:26 www

drwxrwxrwx 2 root root 4096 Mar  8 17:33 wwwlogs

drwxrwxrwx 6 root root 4096 Mar 12 16:40 wwwroot

[root@hqw home]# ./backup.sh

-bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory

这是怎么回事???

1 个回答
  • 阿炭 1月前
    2
    找到解决方法了,分享记录一下:

    第一步:使用下述命令看看该文件的格式,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
    命令行:cat -A xxx.sh
    END[root@hqw home]# cat -A backup.sh 
    #!/bin/bash^M$
    #M-dM-=M- M-hM-&M-^AM-dM-?M-.M-fM-^TM-9M-gM-^ZM-^DM-eM-^\M-0M-fM-^VM-9M-dM-;M-^NM-hM-?M-^YM-iM-^GM-^LM-eM-<M-^@M-eM-'M-^K^M$
    MYSQL_USER=root     #mysqlM-gM-^TM-(M-fM-^HM-7M-eM-^PM-^M^M$
    果然是^M$结尾的,说明格式不正确。

    第二步:使用下述命令直接替换结尾符为unix格式
    命令行:sed -i "s/\r//" xxx.sh
    [root@hqw home]# sed -i "s/\r//" backup.sh

    第三步:再次使用 cat -A xxx.sh 命令查看是否已经更改为unix格式
    [root@hqw home]# cat -A backup.sh 
    #!/bin/bash$
    #M-dM-=M- M-hM-&M-^AM-dM-?M-.M-fM-^TM-9M-gM-^ZM-^DM-eM-^\M-0M-fM-^VM-9M-dM-;M-^NM-hM-?M-^YM-iM-^GM-^LM-eM-<M-^@M-eM-'M-^K$

    说明已经改过来了!
    再次执行:
    [root@hqw home]# ./backup.sh
    成功了!!!
    2 回复引用 引用
    • 探知网
      3
        立即登录 立即注册
返回
发新帖