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



我在装有Windows7的PC中编写了一些脚本文件,然后将这些文件上传到远程Linux计算机。远程计算机上的系统是:

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

通过CCD_ 1。使用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 PC上,修改了内容和文件名,然后上传到Linux;脚本文件将拒绝运行并抛出"No such file or directory"错误。

那怎么了?

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

带CRLF线路终端

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

最新更新