Назад | Перейти на главную страницу

Файл не найден, несмотря на отображение в ls

Я пытаюсь запустить скрипт, который виден ls но когда я пытаюсь запустить его, он говорит "Нет такого файла или каталога" Что дает?

root@rx-texas:/home/7days/linux32#
root@rx-texas:/home/7days/linux32# ls
libstdc++.so.6  steamcmd
root@rx-texas:/home/7days/linux32# ./steamcmd
-bash: ./steamcmd: No such file or directory
root@rx-texas:/home/7days/linux32# less steamcmd
"steamcmd" may be a binary file.  See it anyway?

Я использую 64-битный Debian, но это файл linux32, это может быть связано?

Также вот вывод ls -la:

drwxrwxrwx 2 7days 7days    4096 Apr 22  2013 .
drwxrwxrwx 3 7days 7days    4096 Jan  9 22:44 ..
-rwxrwxrwx 1 7days 7days 3807525 Apr 22  2013 libstdc++.so.6
-rwxrwxrwx 1 7days 7days 5642610 Feb  5  2013 steamcmd

выход ldd steamcmd:

not a dynamic executable

Я использую 64-битный Debian, но это файл linux32, это может быть связано?

Это не только связано, но и является прямой причиной ошибки.

Когда вы пытаетесь запустить 32-разрядный исполняемый файл в 64-разрядной системе без поддержки 32-разрядной среды выполнения, отображается эта вводящая в заблуждение ошибка. Это не ./steamcmd что отсутствует, кроме своего загрузчика.

Подробное объяснение см. В ответе под Получение сообщения «Не найдено» при запуске 32-битного двоичного файла в 64-битной системе на Unix.SE.

Предлагаемое решение для Debian - установить поддержку нескольких архитектур с помощью:

dpkg --add-architecture i386 && apt-get update

Проверьте первую строку скрипта. Если вы используете "#!" чтобы ссылаться на исполняемый файл (например, оболочку), убедитесь, что указанный файл: присутствует и доступен для идентификатора пользователя, пытающегося запустить steamcmd.

Например. если у вас есть:

"#! / bin / bash"

В первой строке должен присутствовать / bin / bash. Похоже, вы root, так что с доступом не должно быть проблем. Убедитесь, что у вас нет лишних пробелов в пути к файлу или непечатаемых символов в конце строки.