"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 格式
我用 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 格式