Linux 执行 Shell 脚本提示文件找不到问题解决办法
问题描述
当在 Linux 系统下执行本来存在的 Shell 脚本文件时,系统提示文件不存在。
原因分析
这个问题的主要原因是 Shell 脚本在编写时的系统与执行脚本的系统不一致,具体表现为:
- 在 Windows 系统编写的脚本,拷贝到 Linux 系统执行时会出现此问题
- 从 GitHub 下载包含 Shell 脚本的源文件,在 Windows 系统解压后拷贝到 Linux 系统执行时也可能发生此问题
这是因为:
- Windows 系统下的文件格式为 DOS 格式
- Linux 系统只能执行 UNIX 格式的脚本
- DOS/Windows 下按回车键实际输入的是"回车 (CR)"和"换行 (LF)"
- Linux/UNIX 下按回车键只输入"换行 (LF)"
- 因此 Windows 格式的脚本在每行都会多一个 CR,导致 Linux 下运行时报错
解决方案
我们可以通过 vi 编辑器来查看和修改文件的格式,具体步骤如下:
1、使用 vi 命令打开文件:
vi test.sh
2、在 vi 命令模式中查看文件格式:
:set ff
此时会显示文件格式为:
fileformat=dos
3、修改文件格式为 UNIX:
:set ff=unix
或者:
:set fileformat=unix
4、保存并退出:
:wq
完成以上步骤后,重新执行脚本即可正常运行。
浙公网安备 33010602011771号