我正在尝试将历史追加添加到 MacPorts shell。MacPorts 当前使用类似 bash 的历史记录,其中历史记录是在会话结束后写入的。如果会话崩溃,这可能会出现问题,所以我试图让 MacPorts shell 遵循 zsh 的示例。即,在执行时将每个历史记录项附加到文件中。
在GNU readline 中,这个功能对于函数来说是微不足道的append_history
。但是, MacPorts依赖于 Apple 的编辑线。editline 库似乎没有等效项,append_history
所以我有点迷失了如何将历史记录附加到文件中。我曾想过使用像fopen
and这样的旧标准函数fprintf
,但我意识到 editline 对历史字符串使用自己的编码(例如,空格字符被转换为八进制\040
)。MacPorts 需要与该编码兼容,因为在多个地方使用了 editline。我假设使用了这种编码,因为空格被用作历史分隔符。
我可以尝试编写自己的函数来兼容这种编码,但这似乎充满了不必要的困难。我觉得我一定是错过了什么。有没有一种简单的方法可以将历史记录附加到带有编辑行的文件中?