"No such file or directory" 当我尝试 运行 从 Windows 系统编写的 Linux 脚本时出错

"No such file or directory" error when I try to run a Linux script written from Windows system

我用 Windows7 在我的电脑上写了一些脚本文件,然后我将这些文件上传到远程 Linux 电脑。远程计算机上的系统是:

Debian 3.14.15-2 (2014-08-09) x86_64 GNU/Linux

来自 uname -a。使用 ls 命令我看到文件已成功上传到预期目录:

xxx@ion:/mnt/backup/TIEGCM2/saturation_2.0$ ls
Apr_P_150_res5.0.job  Apr_P_200_res5.0.job Apr_P_100_res5.0.job

这些文件是 C shell 脚本:

xxx@ion:/mnt/backup/TIEGCM2/saturation_2.0$ file Apr_P_200_res5.0.job
Apr_P_200_res5.0.job: C shell script, ASCII text executable, with CRLF line terminators

然而,当我 运行 其中一个使用 nohup 时,它抛出错误 "No such file or directory":

xxx@ion:/mnt/backup/TIEGCM2/saturation_2.0$ nohup ./Apr_P_200_res5.0.job &
[3] 17065
xxx@ion:/mnt/backup/TIEGCM2/saturation_2.0$ nohup: ignoring input and appending output to 'nohup.out'
nohup: failed to run command './Apr_P_200_res5.0.job': No such file or directory

[3]+  Exit 127                nohup ./Apr_P_200_res5.0.job

文件当然存在,可以由 ls 证明。更奇怪的是,当我直接在vi的Linux系统中写脚本时,它会运行没有任何问题。当我在 Linux 创建脚本文件时,下载到我的 Windows7 PC,修改内容但保持文件名不变,然后上传到 Linux;脚本文件 运行 没有任何问题。但是,如果我在Linux创建脚本文件,下载到我的Windows7电脑,修改内容和文件名,然后上传到Linux;脚本文件将拒绝 运行 并抛出 "No such file or directory" 错误。

怎么了?

输出中的以下行表明您的文件中有 dos 行结尾 "CR - Carriage returns"。

with CRLF line terminators

尝试 运行ning cat -v your_file ,如果它在每行的末尾显示 ^M 你需要 运行 dos2unix 在他们身上,例如 dos2unix your_file 将它们转换为 unix 格式