$返回值127的含义是什么?在UNIX中。
$返回值127的含义是什么?在UNIX中。
Answers:
/bin/sh
当在PATH
系统变量中未找到给定命令且不是内置shell命令时,将返回值127 。换句话说,系统不理解您的命令,因为它不知道在哪里找到您要调用的二进制文件。
which [program]
查看操作系统使用的二进制文件。如果显示为空,则下一步是检查执行位和PATH。
which
并不是特别准确-它不知道别名,shell函数,PATH查找记录或shell状态内部的其他因素。更好地使用type
,它是内置shell的,它了解所有这些东西。
126
(Permission denied
),而不是127
当我尝试调用不可执行的文件时(无论其内容如何);同样,执行目录的尝试也会导致126
(is a directory
)。
127 - command not found
示例:$ caat错误消息将
重击:
caat:找不到命令
现在你检查使用 echo $?
Shell约定是,成功的可执行文件应以0值退出。在bash或您刚运行的可执行文件中,任何其他事情都可以解释为某种形式的失败。另请参见bash手册页的$ PIPESTATUS和EXIT STATUS部分:
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.
此错误有时也很欺骗。它说即使确实存在文件也找不到文件。这可能是由于文件中存在无效的无法读取的特殊字符所致,这是由您使用的编辑器引起的。在这种情况下,此链接可能会对您有所帮助。
-bash:./my_script:/ bin / bash ^ M:错误的解释器:无此类文件或目录
找出是否是此问题的最佳方法是简单地在整个文件中放置一个echo语句,并验证是否抛出相同的错误。