r
shell中的内置实用程序如果zsh
不带任何选项使用,则会重新执行命令历史记录中的最新命令。
这样做的问题是,如果您有多个 shell 会话共享历史记录(SHARE_HISTORY
设置了 shell 选项),则很容易犯下无意中从“非本地”shell 会话执行命令的错误。这使得使用r
存在潜在危险。
问题:如何更改 的行为以r
仅考虑当前 shell 会话本地的历史事件,或者编写一个单独的别名或函数 ,rl
仅考虑本地事件?
由于r
应该与fc -e -
(回忆最近的命令,不要编辑它,然后执行它)相同,我想也许使用r -L
或fc -e - -L
会这样做,但无论出于何种原因,它似乎只有在最近的命令才有效全球的历史事件来自当前 shell 会话。如果不是这种情况,shell 会报告错误fc: no matching events found
。
zsh
zsh-5.8-0-g77d203f
这里使用的是zsh-5.8p0
OpenBSD 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.