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

标签 linux windows bash debian-based

我在装有 Windows7 的 PC 上编写了一些脚本文件,然后将这些文件上传到远程 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 运行其中一个时,它会抛出错误“没有这样的文件或目录”:

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 来证明。更奇怪的是,当我在Linux系统中直接用vi写脚本时,运行起来没有任何问题。当我在Linux下创建一个脚本文件,下载到我的Windows7 PC上,修改内容但保持文件名不变,然后上传到Linux;脚本文件将毫无问题地运行。但是,如果我在 Linux 中创建脚本文件,下载到我的 Windows7 PC,修改内容和文件名,然后上传到 Linux;脚本文件将拒绝运行并抛出“没有这样的文件或目录”错误。

怎么了?

最佳答案

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

with CRLF line terminators

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

关于linux - 当我尝试运行从 Windows 系统编写的 Linux 脚本时出现 "No such file or directory"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464483/

相关文章:

json - 无法在 json --data 中使用变量

linux - 我在 rc.local 中不断收到错误

java - eclipse execute jar文件在linux机器上运行

linux - "Virtual"Windows 共享(可能)使用 Samba?

c - 在 C 中为我自己的应用程序获取 HWND

windows - 如何在 Windows 上使用 'rhc' 命令 ssh 进入 openshift 应用程序?

bash - 带有 if 语句的 Grep 命令

c - 为什么我的c程序不能工作

linux - 无法在 Linux 上的 PowerShell 中创建 Windows 快捷方式

python - pypcap 支持 python 2.7?