Która wersja sed nie jest GNU sed 4.0?


12

Próbuję dowiedzieć się, którą wersję sedmam na BusyBox 1.18.3. Dane --versionwyjściowe są tajemnicze.

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

Poniższy kod pochodzi z odpowiedniego 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;
}

To jest nagłówek:

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

Istnieje również lista „obsługiwanych funkcji i poleceń w tej wersji sed”. Wygląda na wyjątkowy sed, ale jak jest wyjątkowy? Czy jest wykonany na zamówienie dla BusyBox, czy pochodzi z innego źródła?

Jak mam się do tego odwoływać sed, np. W pytaniach SE?

Odpowiedzi:


8

BusyBox sedtak naprawdę nie obsługuje --version. Jak wskazuje komentarz, dane wyjściowe są przeznaczone do konfigurowania skryptów , a nie dla ludzi. (Jest to dość mylące dla ludzi w dość głupiutki sposób!) Opisz to jako BusyBox sed wskazujące wersję Busybox (uzyskaną z busybox | head -n 1).

Niektóre polecenia BusyBox mają opcjonalne funkcje i nie ma ogólnego sposobu na sprawdzenie, które z nich zostały skompilowane. sedNie ma żadnych.

Jeśli chodzi o to, dlaczego BusyBox sed zgłasza, że ​​nie jest to GNU sed, chodzi w rzeczywistości o to, że stara się przekazać jako GNU sed, ponieważ jest wystarczająco kompatybilny. Niektóre skrypty konfiguracyjne szukają łańcucha GNU sed version nnni w ten sposób BusyBox sed jest akceptowalny. W szczególności skrypt konfiguracyjny GNU libc musiał być „[zastrzelony] w głowę bazooką pełną potłuczonego szkła i zardzewiałych gwoździ” (© Rob Landley).


1

Jest to niestandardowa wersja sed napisana dla BusyBox. Odniósłbym się do tego przez zainstalowaną wersję BusyBox, .eg BusyBox sed v-cokolwiek

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.