Какая версия 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?


источник

Ответы:

8

BusyBox на sedсамом деле не поддерживает --version. Как указано в комментарии, выходные данные предназначены для сценариев настройки , а не для людей. (Это вводит людей в заблуждение довольно глупо!) Опишите его как BusyBox sed, указывающий версию Busybox (полученную с помощью busybox | head -n 1).

Некоторые команды BusyBox имеют дополнительные функции, и нет никакого общего способа найти, какие из них были скомпилированы sed.

Что касается того, почему BusyBox sed сообщает, что это не GNU sed, то дело в том, что он пытается выдать себя за GNU sed, потому что он достаточно совместим. Некоторые скрипты configure ищут строку GNU sed version nnn, и это приемлемо для BusyBox sed. В частности, скрипт настройки GNU libc должен был быть «[выстрелен] в голову из базуки, полной битого стекла и ржавых гвоздей» (© Rob Landley).

Жиль "ТАК - перестань быть злым"
источник
1

Это пользовательская версия sed, написанная для BusyBox. Я бы сказал, что у вас установлена ​​версия BusyBox, например. BusyBox sed v-what

EightBitTony
источник