可能没有全面的列表,因为命令退出状态的含义本质上是命令特定的。对于给定的命令,通常可以在各个命令的手册页和Info文档中获取有关此信息。
在
test$ hello
-bash: hello: command not found
test$ echo $?
127
退出代码127
来自bash
的情况下,因为请求命令本身不能被发现。
在
test$ expr 1/0
expr: division by zero
test$ echo $?
2
退出代码2
来自expr
的情况。
其中一些命令可能是标准化的,或者至少可以协调几个命令或一组命令(例如,“我可以想象得到的”sh
-shells“),但是除非一个命令要符合这些约定之一(并且可能存在多个相互冲突的约定),命令的作者完全可以自由决定他们想要退出状态代码意思是说。
有一个重要的例外:所有UNIX命令应该坚持这种松散的规则成为好公民,并提供有意义的可组合性(与管道例如)在命令行上:
0
手段“成功”或“真” /“truthy”
- 非
0
手段(在非常广泛的意义),“失败”或“非成功”或“假” /“falsy”
正如你所看到的,THI这仍然留下了很多解释的空间,这是完全有意的,因为这些含义必须是针对单个命令的上下文而言的。 (例如考虑的false
命令,具有非常宗旨,以“失败”,因此总是返回非0
退出代码。)
的list您发现描述返回代码系统调用。系统调用是指程序向内核发出一个请求,并且与命令调用不同,因此这些返回代码不一定与命令退出代码相同。
值得注意的是,1的退出状态几乎总是*表示“一般错误”,而不是指示任何特定类型的错误。 – chepner