我注意到,如果脚本的行尾包含回车符,bash 将拒绝运行该脚本。要观察这一点,请创建一个文件hello.sh
:
#!/bin/bash
echo hello
现在赋予它执行权限:
chmod 700 hello.sh
并运行./hello.sh
:它工作完美!
现在试试这个:
unix2dos hello.sh
./hello.sh
我得到:
bash: ./hello.sh: cannot execute: required file not found
为什么无法运行脚本?
答案1
无论好坏,回车符都是文件名中的有效字符。实际上,您的 shell 不是在尝试执行,/bin/bash
而是在尝试执行/bin/bash^M
,其中^M
此处代表 CR 字符。该文件不存在,因此您的 shell 无法找到指定的解释器来执行脚本。