3

我需要找到实现false的源代码。
我在github上找到了源代码并找到了 false.c,其中 false 以代码 255 退出。
那么,为什么 "false; 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);
}
4

1 回答 1

13

如果 bash 是你的 shell,false它是一个内置的——所以你正在查看错误的源代码。

在文件中builtins/colon.def查看内置于 bash 本身的版本:

/* Return an unsuccessful result. */
int
false_builtin (ignore)
     char *ignore;
{
  return (1);
}

如果您想使用操作系统供应商的版本false而不是内置版本,您可以使用command falseor来实现/bin/false

于 2020-11-02T16:16:32.677 回答