bash плохой интерпретатор нет такого файла или каталога
«bash: нет такого файла или каталога», даже если файл существует
Я довольно новичок в Ubuntu, и недавно я создал файл.o, набрав в терминале:
Однако, когда я попытался выполнить файл.o, я получил эту ошибку:
Проблема в том, что это должен быть 32-битный исполняемый файл, и если да, то как я могу изменить его на 32-битный исполняемый файл?
Изменить 2: я смог исправить дамп ядра и смог дать разрешение на запуск моего файла, но теперь я получаю новую ошибку:
Когда я сделал file averge Я получил это:
3 ответа
.o файлы не являются исполняемыми файлами.
Пожалуйста, попробуйте одно из следующего:
Если average файл все еще не запускается, попробуйте дать ему разрешения
РЕДАКТИРОВАТЬ (07/03/17)
объяснение
Меня попросили объяснить, что делают команды, вот и все.
Это компилятор, который интерпретирует ваш код и преобразует его в машинный код, который может интерпретировать ваша машина.
Этот флаг сообщает компилятору о почти всех предупреждениях (Wall = Warn all). Посмотрите на код ниже.
-std = C++11
Вы, кажется, плохо знакомы с C++, так что не беспокойтесь обо всех этих версиях!: D
Компилировать без ссылок.
Это ускоряет компиляцию большого проекта, поскольку при изменении одного файла требуется создать только один объектный файл и связать его с уже скомпилированными объектными файлами.
-o файл
Принимая от man страница:
Поместите вывод в файл. Это относится к любому виду вывода, будь то исполняемый файл, объектный файл, файл ассемблера или предварительно обработанный код C.
По сути, этот флаг указывает компилятору, куда поместить результат любого выполняемого им процесса (компиляция / компоновка /. ).
Bash скрипт и /bin/bash^M: плохой интерпретатор: нет такого файла или каталога
Я учусь через этот учебник, чтобы узнать bash скриптов для автоматизации нескольких задач для меня. Я подключаюсь к серверу с помощью putty.
И я выполнил следующее для read/write/execute permissions
Некоторые подобные вопросы хотели бы увидеть здесь, так что я думаю, что они могут помочь:
11 ответов
Я видел эту проблему при создании сценариев в Windows env, а затем переносе для запуска в среде Unix.
Попробуйте запустить dos2unix в скрипте:
Или просто перепишите сценарий в вашем Unix env с помощью vi и протестируйте.
Unix использует разные окончания строк, поэтому не может прочитать файл, созданный на Windows. Следовательно, он видит ^M как незаконный персонаж.
Если вы хотите записать файл на Windows, а затем перенести его, убедитесь, что ваш редактор настроен на создание файлов в формате UNIX.
Выполните следующую команду в terminal
Это должно сработать.
Если вы используете Sublime Text на Windows или Mac для редактирования своих сценариев:
Нажмите на View > Line Endings > Unix и снова сохраните файл.
Это вызвано редактированием файла в windows и импортом и выполнением в unix.
В notepad++ вы можете установить его специально для файла, нажав
проблема в том, что строка dos заканчивается. Следующее преобразует его в unix
NB: возможно, вам придется сначала установить dos2unix с yum install dos2unix
другой способ сделать это-использовать команду sed для поиска и замены символов окончания строки dos в формат unix:
В вашем файле есть Windows окончаний строк, что сбивает с толку Linux.
Удалите ложные символы CR. Вы можете сделать это с помощью следующей команды:
Для пользователей Eclipse вы можете либо изменить кодировку файла непосредственно из меню File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶) :
Или измените New text file line delimiter на Other: Unix на панели Window > Preferences > General > Workspace :
Я смог решить эту проблему, открыв скрипт в Gedit и сохранив его с соответствующим параметром Line Ending :
Atom имеет встроенный пакет селектора окончания строки
Я разрабатываю на Windows и Mac/Linux одновременно, и я избегаю этой ^M-ошибки, просто выполняя свои сценарии, как я делаю в Windows:
Нет необходимости менять окончания строк.
Похожие вопросы:
Когда я попытался использовать virtualenv на Ubuntu 18.04, я получил эту ошибку: bash: /usr/local/bin/virtualenv: /usr/bin/python: плохой интерпретатор: Нет такого файла или каталога Python 2 и 3.
Скрипт Bash и /bin/bash ^ M: плохой интерпретатор: нет такого файла или каталога
Я изучаю этот учебник, чтобы узнать bash scripts, чтобы автоматизировать несколько задач для меня. Я подключаюсь к серверу с помощью шпатлевки.
И я выполнил следующее для прав на чтение/запись/выполнение
Некоторые подобные вопросы хотели увидеть их, поэтому я думаю, что они могут помочь:
ОТВЕТЫ
Ответ 1
Я видел эту проблему при создании сценариев в Windows env, а затем портировал их для запуска в среде Unix.
Попробуйте запустить dos2unix для скрипта:
Unix использует разные окончания строк, поэтому не может прочитать файл, который вы создали в Windows. Следовательно, он видит ^ M как недопустимый персонаж.
Если вы хотите записать файл в Windows, а затем перенести его, убедитесь, что ваш редактор настроен на создание файлов в формате UNIX.
Ответ 2
Запустите следующую команду в терминале
Он должен работать.
Ответ 3
Если вы используете Sublime Text в Windows или Mac для редактирования ваших скриптов:
Нажмите View > Line Endings > Unix и сохранить файл снова.
Ответ 4
Это вызвано редактированием файла в окнах и импортом и исполнением в unix.
Ответ 5
В блокноте ++ вы можете установить его для файла, нажав
Изменить → Преобразование EOL → Формат UNIX/OSX
Ответ 6
проблема заключается в завершении вывода dos. Следующее преобразует его для unix
Примечание: вам может потребоваться сначала установить dos2unix с помощью yum install dos2unix
Ответ 7
В вашем файле есть конечные строки Windows, которые запутывают Linux.
Удалите ложные символы CR. Вы можете сделать это с помощью следующей команды:
Ответ 8
Мне удалось решить проблему, открыв script в Gedit и сохранив ее с помощью соответствующей опции Line Ending :
Ответ 9
Для пользователей Eclipse вы можете либо изменить кодировку файла непосредственно из меню File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶) :
Или измените панель New text file line delimiter на Other: Unix на панели Window > Preferences > General > Workspace :
Ответ 10
У Atom есть встроенный селектор пакетов завершения
Ответ 11
Я разрабатываю в Windows и Mac/Linux одновременно, и я избегаю этой ^ M-ошибки, просто запуская свои сценарии, как в Windows:
Исполняемый файл есть, но его нет
Скачал линуховый клиент для фотохостинга photofile. В архиве исполняемый файл. Пытаюсь запустить.
ему там может чего надо еще? посмотри ldd photofile что говорит? есть ли у тебя все что нужно?
Похоже, ему твоя glibc не нравится
а что если это файл скормить gdb? может он чего больше скажет?
Ну надо же, они что в Сети фуфло распространяют.
Хотя такая же штука была когда я пытался запустить скачанный с офиц. сайта firefox. Подозрительно всё это.
А ты с архитектурой не промахнулся?
ппц, линуксоиды скачивают и запускают бинарники. Куда катится мир?
А это не баш-скрипт ли часом? (:
Текстовым редактором откройте.
Так бывает, когда неправильно shabang указан.
а чмод + икс не нужно сделать?
>Так бывает, когда неправильно shabang указан.
тогда обычно bad interpreter говорят вроде перед No such file or directory
>а чмод + икс не нужно сделать?
>а чмод + икс не нужно сделать?
-rwxr-xr-x 1 sunny sunny 10771230 Май 19 2008 photofile
думаешь noexec? там ошибка другая была бы емнип.
>Ну надо же, они что в Сети фуфло распространяют.
Пока что видно только что ты «в Сети фуфло распространяешь»
Это плохой файл, не исполняемый. Удалите его.
лддэхни его и посмотри какой библиотеки нехватает.
Ну и сам файл поглядите. (xxd | head и file)
Не, лучше наверное не показывай.
и оно покажет что к чему и почему.
Судя по размеру, вряд ли
и оно покажет что к чему и почему.
У меня на самом деле процессор AMD AM2+ 64 двухядерный. И система вся архитектуры amd64. Но вроде как бы 32-битные программы должны без проблем запускаться на 64-битной платформе, всегда так было. Вот 32-битный skype запускается.
А readelf что показывает? Признаёт этот файл исполняемым?
Попробуйте скормить этот файл /lib/ld-linux* с разными параметрами.
Под /lib/ld-linux вы это имели в виду?
Пишет, что какая-то ошибка. И что это означает?
> И что это означает?
Рядом, случаем, нету другого ld-linux? Если нет, поищите в репозитории пакет для совместимости с 32-битными приложениями (странно, почему же skype работает?)
это ж не библиотека
p.s. а мне викторина нравится ))
> это ж не библиотека
Но такой файл есть в пакете libc6-i386, так что имеет смысл попробовать им воспользоваться. Или Вы не об этом?