Qual versão sed não é GNU sed 4.0?

12

Estou tentando descobrir qual versão sedtenho no BusyBox 1.18.3. A --versionsaída é enigmática.

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

O código a seguir é do 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 é o cabeçalho:

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

Há também uma lista de "recursos e comandos suportados nesta versão do sed". Parece um especial sed, mas como é especial? É feito sob medida para o BusyBox ou vem de outra fonte?

Como devo me referir a isso sed, por exemplo, nas perguntas de SE?


fonte

Respostas:

8

O BusyBox sedrealmente não suporta --version. Como o comentário indica, a saída é destinada a scripts de configuração , não a humanos. (É confuso para os seres humanos de uma maneira bastante boba!) Descreva-o como BusyBox sed, indicando a versão do Busybox (obtida com busybox | head -n 1).

Alguns comandos do BusyBox possuem recursos opcionais e não há uma maneira genérica de descobrir quais foram compilados. sedNão possui nenhum.

Quanto ao motivo pelo qual o BusyBox sed relata que não é GNU sed, o fato é que ele está tentando passar como GNU sed porque é suficientemente compatível. Alguns scripts de configuração procuram a string GNU sed version nnne, dessa forma, o BusyBox sed é aceitável. Especificamente, o script de configuração do GNU libc precisava ser “atingido na cabeça com uma bazuca cheia de cacos de vidro e pregos enferrujados” (© Rob Landley).

Gilles 'SO- parar de ser mau'
fonte
1

É uma versão personalizada do sed, escrita para o BusyBox. Eu me referiria a ele pela versão do BusyBox que você instalou .eg BusyBox sed v-Whatever

EightBitTony
fonte