为什么 "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
.
我需要找到执行错误的源代码。
我在 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
.