使 zsh 中内置的“r”仅考虑共享历史情况下的本地历史

使 zsh 中内置的“r”仅考虑共享历史情况下的本地历史

rshell中的内置实用程序如果zsh不带任何选项使用,则会重新执行命令历史记录中的最新命令。

这样做的问题是,如果您有多个 shell 会话共享历史记录(SHARE_HISTORY设置了 shell 选项),则很容易犯下无意中从“非本地”shell 会话执行命令的错误。这使得使用r存在潜在危险。

问题:如何更改 的行为以r仅考虑当前 shell 会话本地的历史事件,或者编写一个单独的别名或函数 ,rl仅考虑本地事件?

由于r应该与fc -e -(回忆最近的命令,不要编辑它,然后执行它)相同,我想也许使用r -Lfc -e - -L会这样做,但无论出于何种原因,它似乎只有在最近的命令才有效全球的历史事件来自当前 shell 会话。如果不是这种情况,shell 会报告错误fc: no matching events found

zshzsh-5.8-0-g77d203f这里使用的是zsh-5.8p0OpenBSD 6.8 上的软件包中的版本 5.8 ( )。

切向相关的问题:

答案1

r -L当我在邮件列表上询问它时,它没有按预期工作的事实被认为是一个错误zsh-users

该错误已得到纠正2021 年 2 月 18 日,在 shell 的 Git 开发分支上:

commit 6bef719302d6db33c63fb6f2636986dff1941ac2
Author: Peter Stephenson <retracted>
Date:   Thu Feb 18 21:37:08 2021 +0000

    users/26509: fix for r -L

    fc with the -L option should ignore remote entires, rather than
    reading them and treating them as an error.

相关内容