Quale versione di sed non è GNU sed 4.0?


12

Sto cercando di capire quale versione sedho su BusyBox 1.18.3. L' --versionoutput è criptico.

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

Il seguente codice proviene dal pertinente 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;
}

Questa è l'intestazione:

/*
 * 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.
 */

C'è anche un elenco di "funzioni e comandi supportati in questa versione di sed". Sembra uno speciale sed, ma come è speciale? È fatto su misura per BusyBox o proviene da un'altra fonte?

Come devo fare riferimento a questo sed, ad esempio nelle domande SE?

Risposte:


8

BusyBox sednon supporta davvero --version. Come indica il commento, l'output è destinato agli script di configurazione , non agli umani. (È fonte di confusione per gli umani in un modo piuttosto sciocco!) Descrivilo come BusyBox sed indicando la versione di Busybox (ottenuta con busybox | head -n 1).

Alcuni comandi BusyBox hanno funzionalità opzionali e non esiste un modo generico per trovare quelli compilati. sedNon ne ha.

Per quanto riguarda il motivo per cui BusyBox sed riferisce che non è GNU sed, il punto è in realtà che sta cercando di passare come GNU sed perché è sufficientemente compatibile. Alcuni script di configurazione cercano la stringa GNU sed version nnne in questo modo BusyBox sed è accettabile. In particolare, lo script di configurazione di GNU libc doveva essere "[sparato] alla testa con un bazooka pieno di vetri rotti e chiodi arrugginiti" (© Rob Landley).


1

È una versione personalizzata di sed scritta per BusyBox. Vorrei fare riferimento ad esso dalla versione BusyBox che hai installato, .eg BusyBox sed v-qualunque cosa

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.