之前在折腾shell提示符的样式时,发现提示符最后有时会出现”C:127“,C后面的数字不唯一,会有变化。

对于不知道的,就搜索引擎搜索。做了以下尝试,”zsh ys C是什么意思“,”C:127“,”ys“,搜不到解释。
后来想,这里出现”C:127“是因为我设置了oh-my-zsh主题ys的原因,那我能不能找找ys的文档,来看看这个东西到底叫什么,是用来做什么的?
在这里https://gist.github.com/ysmood/6110461找到ys的源代码,line42处
1 | PRIVILEGES USER @ MACHINE in DIRECTORY on git:BRANCH STATE [TIME] C:LAST_EXIT_CODE |
指出了”C“的含义是last_exit_code,翻译是”最后退出的代码“,然后再搜索,发现这个术语叫退出码。
linux在执行完一条命令后,使用 echo $? 会显示上一条命令是否执行成功
找到一篇博客介绍它,然后参考资料是《Linux命令行与shell脚本编程大全》,刚好我电脑里有这本书,就翻出来看看。
shell中运行的每个命令都是用退出状态码(exit status)告诉shell它已经运行完毕。退出状态码是一个0~255的整数值,在命令结束时由命令传给shell。可以捕获这个值并在脚本中使用。
Linux提供了一个专门的变量
$?来保存上个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量。它的值会变成由shell所执行的最后一条命令 的退出状态码。一个成功结束的退出状态码是0。如果一个命令结束时有错误,退出状态码就是一个正数值。
| 退出码的值 | 含义 | 例子 | 注释 |
|---|---|---|---|
| 1 | 通用错误 | let “var1 = 1/0” | 各种各样的错误都可能使用这个退出码, 比如”除0错误” |
| 2 | shell内建命令使用错误 | 很少看到, 通常情况下退出码都为1 | |
| 126 | 命令调用不能执行 | 程序或命令的权限是不可执行的 | |
| 127 | ”command not found“ | 估计是$PATH不对, 或者是拼写错误 |
|
| 128 | exit的参数错误 | exit 3.14159 | exit只能以整数作为参数, 范围是0 - 255(见脚注) |
| 128+n | 信号”n”的致命错误 | kill -9 脚本的$PPID |
$? 返回137(128 + 9) |
| 130 | 用Control-C来结束脚本 | Control-C是信号2的致命错误, (130 = 128 + 2, 见上边) | |
| 255* | 超出范围的退出状态 | exit -1 | exit命令只能够接受范围是0 - 255的整数作为参数 |
退出状态码的最大只能是255。若其大于255,则返回模除256后的余数。
所有ys主题提示符里的C就是上一条命令的执行状态,帮我们省略了echo $?的命令。
参考资料
《Linux命令行与shell脚本编程大全》