我正在尝试找出sed
BusyBox 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 <[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.
*/
还有一个“此版本的 sed 支持的功能和命令”列表。看起来很特别sed
,但是到底有什么特别呢?它是为 BusyBox 定制的,还是来自其他来源?
我应该如何引用这个sed
,例如在SE问题中?
答案1
BusyBoxsed
并不真正支持--version
.正如注释所示,输出的目的是配置脚本,不适合人类。 (它以一种相当愚蠢的方式让人类感到困惑!)将其描述为 BusyBox sed 指示忙碌盒版本(通过 获得busybox | head -n 1
)。
一些 BusyBox 命令具有可选功能,并且没有通用方法来查找编译了哪些命令。sed
没有任何功能。
至于为什么 BusyBox sed 报告它不是 GNU sed,关键在于它实际上试图冒充 GNU sed,因为它具有足够的兼容性。一些配置脚本会查找字符串GNU sed version nnn
,这样 BusyBox sed 就可以接受。具体来说,GNU libc 的配置脚本需要“用装满碎玻璃和生锈钉子的火箭筒对头部进行射击”(© Rob Landley)。
答案2
它是为 BusyBox 编写的 sed 的自定义版本。我会通过您安装的 BusyBox 版本来引用它,例如 BusyBox sed v-whatever