哪个sed版本不是GNU sed 4.0?


12

我试图找出sed在BusyBox 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 <markw@codepoet.org>
 * Copyright (C) 2002  Matt Kraai
 * Copyright (C) 2003 by Glenn McGrath
 * Copyright (C) 2003,2004 by Rob Landley <rob@landley.net>
 *
 * MAINTAINER: Rob Landley <rob@landley.net>
 *
 * Licensed under GPLv2, see file LICENSE in this source tree.
 */

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

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

Answers:


8

BusyBox sed并不真正支持--version。正如注释所指示的那样,输出旨在用于配置脚本,而不是用于人类。(这以一种相当愚蠢的方式使人类感到困惑!)将其描述为BusyBox sed,指示Busybox的版本(通过获取busybox | head -n 1)。

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

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


1

这是为BusyBox编写的sed的自定义版本。我会以您已安装的BusyBox版本来指代它,例如。BusyBox sed v-whatever

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.