dash 中缺少内置的 fc(即 dash shell 历史记录不起作用)?

dash 中缺少内置的 fc(即 dash shell 历史记录不起作用)?

dash手册中,在Builtins章节下有关于fc内置控制 shell 历史记录并从中重新执行命令的说明,FCEDIT也在HISTSIZE那里提到。然而,当我尝试执行时,它dash给出命令未找到错误。

$ echo one
one
$ fc -l 1
dash: 2: fc: not found
$ fc
dash: 3: fc: not found

问题是,为什么?这是 Ubuntu 开发人员做出的标准和有意识的选择之一,还是我可能需要以fc某种方式启用它?

我已经发现Debian 错误报告提到了fc,但那里提到的补丁是针对 i386 的,报告中的最后一次活动是在 2008 年,所以到目前为止还没有关于 Ubuntu 的内容。而且历史上,fc 已经修复并且存在于不同 BSD 版本的版本中,所以这里一定有一些 Ubuntu 特定或 Debian 特定的东西。

答案1

查看行号 57-59src/builtins.def.indash 源代码中:

#ifndef SMALL
histcmd     -u fc
#endif

SMALL 定义--with-libedit不是在 configure 中设置,我们的 dash/sh 就是这种情况。我猜是为了优化内存占用。

此外,Changelog 还表示:

2005-10-29  Herbert Xu <[email protected]>
[...]
* Disable histcmd completely when SMALL is defined.
[...]

不进行编译是否--with-libedit是故意的选择则超出了我的知识范围。

相关内容