GNU sed 4.0ではないsedバージョンはどれですか?


12

sedBusyBox 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向けにカスタマイズされたものですか、それとも別のソースからのものですか?

sedSEの質問などで、これをどのように参照する必要がありますか?

回答:


8

BusyBox sedは実際にはサポートしていません--version。コメントが示すように、出力は人間ではなくconfigureスクリプトを対象としています。(それはかなり馬鹿げた方法で人間を混乱させます!)BusyBoxのバージョンを示すBusyBox sedとして説明します(で取得busybox | head -n 1)。

一部のBusyBoxコマンドにはオプション機能があり、どのコマンドがコンパイルされたsedかを見つける一般的な方法はありません。

BusyBox sedがGNU sedでないと報告する理由については、十分な互換性があるため、実際にはGNU sedとして偽装しようとしているということです。一部の設定スクリプトは文字列を検索し、GNU sed version nnnこの方法でBusyBox sedは受け入れられます。具体的には、GNU libcのconfigureスクリプトは、「割れたガラスと錆びた釘でいっぱいのバズーカで頭を撃たれる」必要がありました(©Rob Landley)。


1

BusyBox用に作成されたsedのカスタムバージョンです。私はあなたがインストールしたBusyBoxのバージョン、例えばBusyBox sed v-whateverでそれを参照します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.