Что означает возвращаемое значение 127 из $? в UNIX.
291
Значение 127 возвращается, /bin/sh
когда данная команда не найдена в вашей PATH
системной переменной и не является встроенной командой оболочки. Другими словами, система не понимает вашу команду, потому что она не знает, где найти двоичный файл, который вы пытаетесь вызвать.
which [program]
чтобы увидеть, какой двоичный файл использует ОС. Если он пуст, следующим шагом будет проверка бита выполнения и PATH.which
не совсем точен - он не знает ни о псевдонимах, ни о функциях оболочки, ни о памятке поиска в PATH, ни о других факторах, связанных с состоянием оболочки. Гораздо лучше использоватьtype
встроенную оболочку, которая знает обо всех этих вещах.126
(Permission denied
), а не127
когда я пытаюсь вызвать неисполняемый файл (независимо от его содержимого); аналогично, попытка выполнить каталог также приводит к126
(is a directory
).Обычно это означает:
127 - команда не найдена
но это также может означать, что команда найдена ,
но библиотека, которая требуется для этой команды , НЕ найдена .
источник
127 - command not found
пример: $ caat Сообщение об ошибке будет
Баш:
теперь вы проверяете, используя
echo $?
источник
Соглашение оболочки гласит, что успешный исполняемый файл должен завершаться со значением 0. Все остальное может быть интерпретировано как какой-то сбой, на части bash или исполняемого файла, который вы только что запустили. Смотрите также $ PIPESTATUS и раздел EXIT STATUS на странице руководства bash:
источник
Это не имеет особого значения, кроме того, что последний процесс, который завершил работу, сделал это со статусом выхода 127.
Тем не менее, он также используется bash (при условии, что вы используете bash в качестве оболочки), чтобы сообщить вам, что команда, которую вы пытались выполнить, не может быть выполнена (т.е. она не может быть найдена). К сожалению, это не выводится сразу, если процесс завершился со статусом 127 или не может быть найден.
РЕДАКТИРОВАТЬ:
не выводится сразу, за исключением вывода на консоль, но это переполнение стека, поэтому я предполагаю, что вы делаете это в сценарии.
источник
Эта ошибка также временами обманчива. Он говорит, что файл не найден, хотя файлы действительно присутствуют. Это может быть из-за недопустимых нечитаемых специальных символов, присутствующих в файлах, которые могут быть вызваны используемым вами редактором. Эта ссылка может помочь вам в таких случаях.
-bash: ./my_script: / bin / bash ^ M: плохой интерпретатор: нет такого файла или каталога
Лучший способ выяснить, не является ли это проблемой, состоит в простом размещении оператора echo во всем файле и проверке, если выдается такая же ошибка.
источник
Если вы пытаетесь запустить программу с использованием языка сценариев, вам может потребоваться указать полный путь к языку сценариев и файл для выполнения. Например:
источник
Если в конце имени вызываемого сценария Unix в JCL мэйнфрейма IBM есть несколько дополнительных символов или цифр, он может выдать такую ошибку.
источник