哪个 sed 版本不是 GNU sed 4.0?

哪个 sed 版本不是 GNU sed 4.0?

我正在尝试找出sedBusyBox 1.18.3 上的版本。输出--version是神秘的。

$ sed --version
This is not GNU sed version 4.0

以下代码来自相关sed.c.

    /* Lie to autoconf when it starts asking stupid questions. */
if (argv[1] && !strcmp(argv[1], "--version")) {
    puts("This is not GNU sed version 4.0");
    return 0;
}

这是标题:

/*
 * sed.c - very minimalist version of sed
 *
 * Copyright (C) 1999,2000,2001 by Lineo, inc. and Mark Whitley
 * Copyright (C) 1999,2000,2001 by Mark Whitley <[email protected]>
 * Copyright (C) 2002  Matt Kraai
 * Copyright (C) 2003 by Glenn McGrath
 * Copyright (C) 2003,2004 by Rob Landley <[email protected]>
 *
 * MAINTAINER: Rob Landley <[email protected]>
 *
 * Licensed under GPLv2, see file LICENSE in this source tree.
 */

还有一个“此版本的 sed 支持的功能和命令”列表。看起来很特别sed,但是到底有什么特别呢?它是为 BusyBox 定制的,还是来自其他来源?

我应该如何引用这个sed,例如在SE问题中?

答案1

BusyBoxsed并不真正支持--version.正如注释所示,输出的目的是配置脚本,不适合人类。 (它以一种相当愚蠢的方式让人类感到困惑!)将其描述为 BusyBox sed 指示忙碌盒版本(通过 获得busybox | head -n 1)。

一些 BusyBox 命令具有可选功能,并且没有通用方法来查找编译了哪些命令。sed没有任何功能。

至于为什么 BusyBox sed 报告它不是 GNU sed,关键在于它实际上试图冒充 GNU sed,因为它具有足够的兼容性。一些配置脚本会查找字符串GNU sed version nnn,这样 BusyBox sed 就可以接受。具体来说,GNU libc 的配置脚本需要“用装满碎玻璃和生锈钉子的火箭筒对头部进行射击”(© Rob Landley)。

答案2

它是为 BusyBox 编写的 sed 的自定义版本。我会通过您安装的 BusyBox 版本来引用它,例如 BusyBox sed v-whatever

相关内容