127 Код возврата от $?

В чем смысл возвращаемого значения 127 из $? в UNIX.

Ответ 1

Значение 127 возвращается /bin/sh, когда данная команда не найдена в вашей системной переменной PATH, и она не является встроенной командой оболочки. Другими словами, система не понимает вашу команду, потому что она не знает, где найти бинарный код, который вы пытаетесь вызвать.

Ответ 2

Обычно это означает:

127 - команда не найдена

но это также означает, что команда найдена,
но библиотека, требуемая командой , не найдена.

Ответ 3

127 - command not found

пример: $ caat Сообщение об ошибке будет

Баш:

caat: команда не найдена

теперь вы проверяете с помощью echo $?

Ответ 4

Соглашение оболочки состоит в том, что успешный исполняемый файл должен выйти со значением 0. Любое другое может быть интерпретировано как сбой какого-то рода, на части bash или исполняемый файл, который вы только что запустили. См. Также $PIPESTATUS и EXIT STATUS раздела справочной страницы bash:

   For  the shell’s purposes, a command which exits with a zero exit status has succeeded.  An exit status
   of zero indicates success.  A non-zero exit status indicates failure.  When a command terminates  on  a
   fatal signal N, bash uses the value of 128+N as the exit status.
   If  a command is not found, the child process created to execute it returns a status of 127.  If a com-
   mand is found but is not executable, the return status is 126.

   If a command fails because of an error during expansion or redirection, the exit status is greater than
   zero.

   Shell  builtin  commands  return  a  status of 0 (true) if successful, and non-zero (false) if an error
   occurs while they execute.  All builtins return an exit status of 2 to indicate incorrect usage.

   Bash itself returns the exit status of the last command executed, unless  a  syntax  error  occurs,  in
   which case it exits with a non-zero value.  See also the exit builtin command below.

Ответ 5

Он не имеет особого значения, кроме того, что последний процесс для выхода сделал это с статусом выхода 127.

Однако он также используется bash (если вы используете bash в качестве оболочки), чтобы сказать вам, что команда, которую вы пытались выполнить, не может быть выполнена (т.е. ее не удалось найти), Это, к сожалению, не сразу выводимо, хотя, если процесс завершился со статусом 127, или если он не смог найти.

EDIT:
Не сразу выводимый, за исключением вывода на консоли, но это переполнение стека, поэтому я предполагаю, что вы делаете это в script.

Ответ 6

Если вы пытаетесь запустить программу с использованием языка сценариев, вам может потребоваться включить полный путь к языку сценариев и к исполняемому файлу. Например:

exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');

Ответ 7

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

- bash:./my_script:/bin/bash ^ M: плохой интерпретатор: нет такого файла или каталога

Лучший способ узнать, является ли это этой проблемой, - это просто разместить инструкцию echo во всем файле и проверить, не была ли выбрана одна и та же ошибка.

Ответ 8

Если в конце имени вызываемого сценария Unix в JCL мэйнфрейма IBM есть несколько дополнительных символов или цифр, он может выдать такую ошибку.