127从$返回代码?

时间:2009-11-19 13:05:44

标签: process unix

来自$的返回值127是什么意思?在UNIX中。

8 个答案:

答案 0 :(得分:354)

/bin/sh系统变量中找不到给定命令并且它不是内置shell命令时,PATH返回值127。换句话说,系统不理解你的命令,因为它不知道在哪里找到你想要调用的二进制文件。

答案 1 :(得分:47)

通常意味着:

127 - 找不到命令

但也可能意味着找到命令
但找不到命令所需的库

答案 2 :(得分:10)

127 - command not found

示例:$ caat 错误消息

bash:

  

caat:命令未找到

现在您使用echo $?

进行检查

答案 3 :(得分:8)

一个shell约定是一个成功的可执行文件应该以值0退出。任何其他东西都可以被解释为某种类型的失败,部分是bash或刚刚运行的可执行文件。另请参阅bash手册页的 $ PIPESTATUS 退出状态部分:

   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.

答案 4 :(得分:7)

它没有特殊意义,除了退出的最后一个进程这样做,退出状态为127.

但是,它也被bash使用(假设您使用bash作为shell)告诉您无法执行您尝试执行的命令(即无法找到它)。遗憾的是,如果流程以状态127退出,或者无法找到,那么很可能无法立即扣除。

编辑:
除了控制台上的输出外,不能立即导出,但这是堆栈溢出,所以我假设你在脚本中这样做。

答案 5 :(得分:1)

如果您尝试使用脚本语言运行程序,则可能需要包含要执行的脚本语言的完整路径。例如:

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

答案 6 :(得分:0)

这个错误有时也是骗人的。即使文件确实存在,也说找不到文件。可能是因为文件中存在无效的不可读特殊字符,这些特殊字符可能是由您正在使用的编辑器引起的。在这种情况下,此链接可能会对您有所帮助。

-bash: ./my_script: /bin/bash^M: bad interpreter: No such file or directory

找出是否存在此问题的最佳方法是在整个文件中简单地放置一个echo语句,并验证是否抛出了相同的错误。

答案 7 :(得分:0)

如果IBM大型机JCL在被调用的unix脚本名称的末尾有一些额外的字符或数字,则它会引发此类错误。