在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-59在src/builtins.def.in
dash 源代码中:
#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
是故意的选择则超出了我的知识范围。