¿Qué versión de sed no es GNU sed 4.0?


12

Estoy tratando de averiguar qué versión de sedeso tengo en BusyBox 1.18.3. La --versionsalida es críptica.

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

El siguiente código es del relevante 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;
}

Este es el encabezado:

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

También hay una lista de "funciones y comandos compatibles en esta versión de sed". Parece un especial sed, pero ¿cómo es especial? ¿Está hecho a medida para BusyBox o proviene de otra fuente?

¿Cómo debo referirme a esto sed, por ejemplo, en preguntas SE?

Respuestas:


8

BusyBox sedno es realmente compatible --version. Como indica el comentario, el resultado está destinado a configurar scripts , no para humanos. (¡Es confuso para los humanos de una manera bastante tonta!) Descríbalo como BusyBox sed indicando la versión de Busybox (obtenida con busybox | head -n 1).

Algunos comandos de BusyBox tienen características opcionales, y no hay una forma genérica de encontrar cuáles fueron compilados. sedNo tiene ninguno.

En cuanto a por qué BusyBox sed informa que no es GNU sed, el punto es, de hecho, que está tratando de pasar como GNU sed porque es lo suficientemente compatible. Algunos scripts de configuración buscan la cadena GNU sed version nnn, y de esta manera BusyBox sed es aceptable. Específicamente, el script de configuración de GNU libc necesitaba ser "[disparado] en la cabeza con una bazuca llena de cristales rotos y clavos oxidados" (© Rob Landley).


1

Es una versión personalizada de sed escrita para BusyBox. Me referiría a él por la versión de BusyBox que tienes instalada .eg BusyBox sed v-whatever

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.