"Нет такого файла или каталога", но он существует


Я просто хочу запустить исполняемый файл из командной строки ./arm-mingw32ce-g++, но затем я получаю сообщение об ошибке

bash: ./arm-mingw32ce-g++: No such file or directory

я запускаю Ubuntu Linux 10.10. ls -l списки

-rwxr-xr-x 1 root root  433308 2010-10-16 21:32 arm-mingw32ce-g++

С помощью sudo (sudo ./arm-mingw32ce-g++) дает

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

Я понятия не имею, почему ОС не может даже увидеть файл, когда он там. Есть мысли?

9 62

9 ответов:

эта ошибка может означать, что ./arm-mingw32ce-g++ не существует (но он существует), или что он существует и является динамически связанным исполняемым файлом, распознанным ядром, но динамический загрузчик которого недоступен. Вы можете увидеть, что динамический загрузчик требуется работает ldd /arm-mingw32ce-g++; все, что помечено not found это динамический загрузчик или библиотека, которую необходимо установить.

если вы пытаетесь запустить 32-разрядный двоичный файл на установке amd64:

  • до Ubuntu 11.04, установить пакет ia32-libs.
  • на Ubuntu 11.10, установить ia32-libs-multiarch.
  • начиная с 12.04, установка ia32-libs-multiarch, или выберите разумный набор :i386 пакеты в дополнение к :amd64 пакеты.

я столкнулся с этой ошибкой, когда я пытался построить источник селена на Ubuntu. Простой сценарий оболочки с правильным shebang не смог запустить даже после того, как я покрыл все предварительные условия.

file file-name # helped me in understanding that CRLF ending were present in the file.

Я открыл файл в Vim, и я мог видеть, что только потому, что я когда-то редактировал этот файл на машине Windows, он был в формате DOS. Я конвертировал файл в формат Unix с помощью команды ниже:

dos2unix filename # actually helped me and things were fine.

Я надеюсь, что мы должны заботиться, когда мы редактируем файлы через платформы мы также должны заботиться о форматах файлов.

эта ошибка также может возникнуть при попытке запустить скрипт и shebang ошибка. Убедитесь, что он читает #!/bin/sh,#!/bin/bash, или какой переводчик вы используете.

у меня было такое же сообщение об ошибке при попытке запустить скрипт Python-это не был предполагаемый случай использования @Warpspace (см. другие комментарии), но это было одним из лучших хитов для моего поиска, поэтому, возможно, кто-то найдет его полезным.

в моем случае это были окончания строки DOS (\r\n вместо \n) что линия shebang (#!/usr/bin/env python) было споткнуться. Простой dos2unix myfile.py исправил.

Я получил ту же ошибку для простого сценария bash, который не будет иметь 32/64-битных проблем. Возможно, это связано с тем, что скрипт, который вы пытаетесь запустить, содержит ошибку. Это сообщение на форуме ubuntu указывает, что с обычными файлами скриптов Вы можете добавить " sh " спереди, и вы можете получить отладочный вывод из него. например,

$ sudo sh arm-mingw32ce-g++

и посмотреть, если вы получите любые выходные.

в моем случае актуальна проблема заключалась в том, что файл, который я пытаюсь выполнить в Windows формат, а не linux.

Я получил эту ошибку “No such file or directory” но он существует, потому что мой файл был создан в Windows, и я попытался запустить его на Ubuntu, и файл содержал недопустимый 15\r, где когда-либо была новая строка. Я только что создал новый файл усечения нежелательных вещей

sleep: invalid time interval ‘15\r’
Try 'sleep --help' for more information.
script.sh: 5: script.sh: /opt/ag/cont: not found
script.sh: 6: script.sh: /opt/ag/cont: not found
root@Ubuntu14:/home/abc12/Desktop# vi script.sh 
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \r  \n   w   g   e   t       h   t   t   p   :   /

0000400   :   4   1   2   0   /  \r  \n
0000410
root@Ubuntu14:/home/abc12/Desktop# tr -d \015 < script.sh > script.sh.fixed
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \n   w   g   e   t       h   t   t   p   :   /   /

0000400   /  \n
0000402
root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

У меня была такая же проблема с файлом, который я создал на моем Mac. Если я попытаюсь запустить его в оболочке ./filename я получил сообщение об ошибке файл не найден. Я думаю, что что-то было не так с файлом.

что я сделал:

откройте сеанс ssh на сервере
имя кота
скопировать вывод в буфер обмена
rm filename
нажмите имя файла
vi filename
i для режима вставки
вставьте содержимое из буфер обмена
ESC для завершения режима вставки
команду!

Это работает для меня.

у меня только что была эта проблема в mingw32 bash. Я выполнил node/npm из Program Files (x86)\nodejs, а затем перевез их в disabled каталог (по существу, удаление их из пути). У меня тоже было Program Files\nodejs (т. е. 64-битная версия) в пути, но только после версии x86. После перезапуска оболочки bash можно найти 64-битную версию npm. node работал правильно все время (проверено с node -v это изменилось, когда была перемещена версия x86).

Я думаю hash -r работал бы вместо перезапуска Баш: https://unix.stackexchange.com/a/5610

ниже команда работала на 16.4 Ubuntu

эта проблема возникает, когда ваш файл.sh поврежден или не отформатирован в соответствии с протоколами unix.

dos2unix преобразует файл. sh в формат Unix!

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh 
sudo ./test.sh