我想弄清楚sed我在 BusyBox 1.18.3 上有哪个版本。该--version输出是神秘的。
$ sed --version
This is not GNU sed version 4.0
Run Code Online (Sandbox Code Playgroud)
以下代码来自相关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;
}
Run Code Online (Sandbox Code Playgroud)
这是标题:
/*
* 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.
*/
Run Code Online (Sandbox Code Playgroud)
还有一个“此版本 sed 中支持的功能和命令”的列表。它看起来很特别sed,但它有什么特别之处呢?它是为 BusyBox 定制的,还是来自其他来源?
我应该如何引用这个sed,例如在 SE 问题中?
BusyBoxsed并不真正支持--version. 正如注释所示,输出用于配置脚本,而不是用于人类。(它以一种相当愚蠢的方式让人类感到困惑!)将其描述为 BusyBox sed 表示Busybox 版本(通过 获得busybox | head -n 1)。
一些 BusyBox 命令具有可选功能,并且没有通用的方法来查找编译了哪些命令。sed没有任何方法。
至于为什么 BusyBox sed 报告说它不是 GNU sed,关键在于它试图冒充 GNU sed,因为它具有足够的兼容性。一些配置脚本寻找 string GNU sed version nnn,这样 BusyBox sed 是可以接受的。具体来说,GNU libc 的配置脚本需要“用装满碎玻璃和生锈钉子的火箭筒[射击] 头部”(© Rob Landley)。