キーボードの上矢印または下矢印を押して、履歴から何かを変更すると、永久に変更されます。Ctrl-Cを押してからもう一度起動しようとしても、変更されたままです。履歴でそのエントリが失われています。
これを防ぐにはどうすればよいですか?
キーボードの上矢印または下矢印を押して、履歴から何かを変更すると、永久に変更されます。Ctrl-Cを押してからもう一度起動しようとしても、変更されたままです。履歴でそのエントリが失われています。
これを防ぐにはどうすればよいですか?
回答:
readline設定が必要です:
set revert-all-at-newline on
挿入するか~/.inputrc
(下の注を参照)、またはに挿入できbind 'revert-all-at-newline on'
ます~/.bashrc
。
デモ:
$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows
詳細はBashのマンページにあります:
revert-all-at-newline
'
on
'に設定すると、Readlineは、accept-lineが実行されたときに戻る前に、履歴行へのすべての変更を取り消します。デフォルトでは、履歴行が変更され、readlineの呼び出し全体で個々の取り消しリストが保持されます。デフォルトは 'off
'です。
注意:
~/.inputrc
設定の目的で新しいファイルが作成される場合、revert-all-at-newline
bashはファイルにある設定の代わりにこのファイルのreadline設定を使用することに注意して/etc/inputrc
ください。つまり、で指定された設定/etc/inputrc
は無効になります。したがって、/etc/inputrc
ファイルが存在する場合は~/.inputrc
、次の行から始めることをお勧めします。
$include /etc/inputrc
私が入ります:
ls /tmp
-素晴らしい。今は入りません
ls /temp
履歴を入力することを防ぐことができるため、空白でコマンドを開始した場合、ls / tmpを上書きすることを防ぐことができます:
ls /temp
見づらいですが、知っていれば......
によって制御されます
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
ignoreupsは重複したコマンドのみを無視し、ignorebothは行頭のスペースを無視します。これは、隠されていないパスワードを隠すのに便利です。
しかし、解決策を求めているかもしれません。変更されていない古いコマンドと新しいコマンドの両方のコマンドで終わります。私のバージョンのbashまたは設定はこのように動作しますが、あなたのものとは何が違うのかわかりません。