Ошибка "Нет такого файла или каталога" при попытке запустить скрипт Linux, написанный из системы Windows
Я написал несколько файлов сценариев на своем компьютере с 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 ответ
Приведенная ниже строка в вашем выводе указывает на то, что в вашем файле есть окончания строки "CR - возврат каретки".
с ограничителями строки CRLF
Попробуйте запустить cat -v your_file
, если он показывает ^M в конце каждой строки, вам нужно запустить dos2unix
на них, например dos2unix your_file
преобразовать их в формат Unix