bash - 如果错误的 Solaris 源以 255 退出,为什么 "false; echo $?"返回 1?

标签 bash shell solaris opensolaris

我需要找到实现 false 的源代码。我在 github 上找到了来源并找到 false.c其中 false 以代码 255 退出。
那么,为什么“假; echo $?”在 shell 中返回 1 而不是 255?
我想我错过了某个地方的来源。
来自 false.c 的代码文件:

#pragma ident   "%Z%%M% %I% %E% SMI"

#include <unistd.h>

/*
 * Exit with a non-zero value as quickly as possible.
 */

int
main(void)
{
    _exit(255);
    /*NOTREACHED*/
    return (0);
}

最佳答案

如果 bash 是你的 shell,false是一个内置的——所以你正在查看错误的源代码。
请参阅 bash 本身内置的版本,in the file builtins/colon.def :

/* Return an unsuccessful result. */
int
false_builtin (ignore)
     char *ignore;
{
  return (1);
}
如果您想使用操作系统供应商的版本 false而不是内置的,你可以用 command false 来做到这一点或 /bin/false .

关于bash - 如果错误的 Solaris 源以 255 退出,为什么 "false; echo $?"返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64649099/

相关文章:

linux - 如何通过 Bash 在 Linux 中设置重启后不变的时间?

bash - shell脚本中的 `kill -0 $pid`有什么作用?

Bash:参数太多

regex - 如何在 grep 中每个文件匹配一次?

shell - 将空值与字符串进行比较时,shell 脚本中需要一元运算符

linux - 不匹配任何东西的 Glob 会扩展到自身,而不是什么都没有

shell - 运行 CakePHP Shell 脚本

c++ - 是否可以在为 Solaris SPARC 生成二进制文件的 Intel 机器上编写 QT C++ 项目?

linux - Solaris 等效于拖尾文件中的字符数量

java - 在 Solaris 上使用 Java 的优势