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

Why does "false; echo $?" return 1, if the Solaris source for false exits with 255?

我需要找到执行错误的源代码。
我在 github and found false.c 上找到了来源,其中 false 退出代码为 255。
那么,为什么“false;echo $?” return 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);
}

如果您想使用 OS 供应商版本的 false 而不是 built-in 版本,您可以使用 command false/bin/false .