Я просто хочу запустить исполняемый файл из командной строки ./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
Я понятия не имею, почему ОС даже не видит файл, когда он есть. есть идеи?
источник
not a dynamic executable
(до того, как я установил ia32-libs).ia32-libs-*
устарела в Ubuntu 16.04, установитеlib32ncurses5
иlib32z1
вместо этого.Я столкнулся с этой ошибкой, когда пытался собрать исходный код Selenium на 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
или какой бы интерпретатор вы ни использовали.источник
./my/full/path/myscript
вместо./myscript
.У меня было такое же сообщение об ошибке при попытке запустить скрипт Python - это не был предполагаемый вариант использования @ Warpspace (см. Другие комментарии), но он был одним из самых популярных в моем поиске, поэтому, возможно, кто-то сочтет его полезным.
В моем случае это было окончание строки DOS (
\r\n
а не\n
), что строка shebang (#!/usr/bin/env python
) споткнется. Простоеdos2unix myfile.py
исправление.источник
Я получил ту же ошибку для простого сценария bash, у которого не было бы проблем с 32/64-разрядными версиями. Возможно, это связано с тем, что сценарий, который вы пытаетесь запустить, содержит ошибку. Это сообщение на форуме ubuntu указывает, что с обычными файлами сценария вы можете добавить 'sh' впереди, и вы можете получить от него некоторые отладочные данные. например
и посмотрите, получите ли вы какой-нибудь результат.
В моем случае реальная проблема заключалась в том, что файл, который я пытался выполнить, был в формате 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
источник
Команда ниже работала на 16.4 Ubuntu
Эта проблема возникает, когда ваш файл .sh поврежден или не отформатирован в соответствии с протоколами unix.
dos2unix преобразует файл .sh в формат Unix!
источник
У меня была такая же проблема с файлом, который я создал на своем Mac. Если я попытаюсь запустить его в оболочке с ./filename, я получу сообщение об ошибке файл не найден. Я думаю, что с файлом что-то не так.
что я сделал:
открыть сеанс ssh для сервера
cat filename
скопировать вывод в буфер обмена
rm filename
touch filename
vi filename
i для режима
вставки вставить содержимое из буфера обмена
ESC для завершения режима вставки
: wq!
Это сработало для меня.
источник
У меня только что возникла эта проблема
mingw32 bash
. Я выполнил node / npm,Program Files (x86)\nodejs
а затем переместил их вdisabled
каталог (по сути, удалив их из пути). У меня также былаProgram Files\nodejs
(т.е. 64-битная версия) в пути, но только после версии x86. После перезапуска оболочки bash можно было найти 64-битную версию npm.node
все время работала корректно (проверено с учетом того,node -v
что изменилось при перемещении версии x86).Думаю
bash -r
, сработало бы вместо перезапуска bash: https://unix.stackexchange.com/a/5610источник
Как уже упоминалось другими, это связано с тем, что не может быть найден загрузчик, а не ваш исполняемый файл. К сожалению, сообщение недостаточно четкое.
Вы можете исправить это, изменив загрузчик, который использует ваш исполняемый файл, см. Мой подробный ответ в этом другом вопросе: Несколько библиотек glibc на одном хосте
В основном вам нужно найти, какой загрузчик он пытается использовать:
Затем найдите правильный путь для эквивалентного загрузчика и измените свой исполняемый файл, чтобы использовать загрузчик с пути, которым он является на самом деле:
Вероятно, вам также нужно будет установить путь для включаемых файлов, вы узнаете, хотите вы этого или нет, после попытки его запустить. Смотрите все подробности в этой другой ветке.
источник
Я нашел решение для моей Ubuntu 18 здесь .
Затем:
источник
У меня была эта проблема, и причиной этого был EOL в некоторых редакторах, таких как Notepad ++. Вы можете проверить это в меню Правка / Преобразование EOL. Следует выбрать Unix (LF). Надеюсь, это будет полезно.
источник
Добавлено здесь для справки в будущем (для пользователей, которые могут попасть в тот же случай): эта ошибка возникает при работе в Windows (которая вводит дополнительные символы из-за другого разделителя строк, чем в системе Linux) и при попытке запустить этот сценарий (с добавленными дополнительными символами) в Linux. Сообщение об ошибке вводит в заблуждение.
В Windows разделителем строк является CRLF ( \ r \ n ), тогда как в Linux это LF ( \ n ). Обычно это можно выбрать в текстовом редакторе.
В моем случае это произошло из-за работы в Windows и загрузки на сервер Unix для выполнения.
источник
scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
Затем мой скрипт запустился,cd $scriptdir || exit 1
но\r
кscriptdir
значению был добавлен файл в моем отредактированном Windows файле . Таким образом, сообщение: no such file or directory
было наиболее запутанным, поскольку в конечном итоге стирало то, на что жаловалось.