Ошибка «Нет такого файла или каталога» при попытке запустить скрипт Linux, написанный из системы Windows - PullRequest
0 голосов
/ 31 января 2019

Я написал несколько файлов сценариев на моем компьютере с 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:

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, изменил содержимое, но оставил имя файла без изменений, а затем загрузил в Linux;файл сценария будет работать без проблем.Однако, если я создал файл сценария в Linux, загрузите его на свой компьютер с Windows7, измените содержимое и имя файла, а затем загрузите в Linux;файл сценария откажется запускаться и выдаст ошибку «Нет такого файла или каталога».

Так что не так?

1 Ответ

0 голосов
/ 31 января 2019

Следующая строка в вашем выводе указывает на то, что в вашем файле есть окончания строки "CR - Carriage return".

с ограничителями строки CRLF

Попробуйте запустить cat -v your_file, если в конце каждой строки отображается ^ M, вам нужно запустить dos2unix на нихНапример, dos2unix your_file для преобразования их в формат Unix

...