r
シェルに組み込まれているユーティリティをzsh
オプションなしで使用すると、コマンド履歴にある最新のコマンドを再実行します。
これの問題は、履歴を共有する複数のシェルセッションがある場合(SHARE_HISTORY
シェルオプションが設定されている場合)、誤って「非ローカル」シェルセッションでコマンドを実行する間違いを犯しやすいことです。これは、使用をr
潜在的に危険にする。
質問:r
現在のシェルセッションのローカル履歴イベントのみを考慮するように動作を変更するか、rl
ローカルイベントのみを考慮する別々のエイリアスまたは関数を作成するにはどうすればよいですか?
(最も最近のコマンドを覚えて編集せずに実行してください)r
と同じでなければならないので、おそらく同じ操作を使用または実行すると思ったが、何らかの理由で最新のコマンドでのみ機能するようです。fc -e -
r -L
fc -e - -L
グローバル履歴イベントは現在のシェルセッションで発生します。そうでない場合、シェルはエラーを報告します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.