Process 127从$返回代码?

Process 127从$返回代码?,process,unix,Process,Unix,美元返回值127的含义是什么?在UNIX中。它没有特殊意义,只是最后一个要退出的进程的退出状态为127 但是,bash也使用它(假设您使用bash作为shell)来告诉您尝试执行的命令无法执行(即,找不到该命令)。不幸的是,如果进程以状态127退出,或者找不到,则无法立即推断 编辑: 除了控制台上的输出外,不能立即推断,但这是堆栈溢出,因此我假设您是在脚本中执行此操作。如果在路径系统变量中找不到给定命令,并且它不是内置的shell命令,则/bin/sh将返回值127。换句话说,系统不理解您的命令

美元返回值127的含义是什么?在UNIX中。

它没有特殊意义,只是最后一个要退出的进程的退出状态为127

但是,bash也使用它(假设您使用bash作为shell)来告诉您尝试执行的命令无法执行(即,找不到该命令)。不幸的是,如果进程以状态127退出,或者找不到,则无法立即推断

编辑:

除了控制台上的输出外,不能立即推断,但这是堆栈溢出,因此我假设您是在脚本中执行此操作。如果在
路径
系统变量中找不到给定命令,并且它不是内置的shell命令,则
/bin/sh
将返回值127。换句话说,系统不理解您的命令,因为它不知道在哪里找到您试图调用的二进制文件。

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


127-未找到命令

示例:$caat 将显示错误消息

狂欢节:

caat:未找到命令

现在您可以使用echo$?

进行检查,这通常意味着:

127-未找到命令

但也可能意味着找到了命令

但是找不到命令所需的库

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

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

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


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

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

如果bash脚本没有模式,也会发生这种情况“+x”但确实存在。您可以尝试使用
哪个[程序]
查看操作系统正在使用哪个二进制文件。如果结果为空,则下一步是检查执行位和路径。@cr125rider,
,这并不特别准确——它不知道别名、shell函数、路径查找记忆或shell状态内部的其他因素。使用
类型
(一个shell内置程序,它知道所有这些事情)要好得多。将行尾更正为unix格式解决了此问题problem@MatthewKremer:实际上,当我试图调用一个不可执行文件(无论其内容如何)时,我得到的是
126
权限被拒绝
),而不是
127
;同样,尝试执行目录也会导致
126
是一个目录
)。谢谢,这对我很有效。所以我做了哪些操作,然后在脚本中使用了输出路径。工作。。
   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.
exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');