⛳
bash でコピペで張り付けたコマンドが履歴に残らない
bash でコピペで張り付けたコマンドが履歴に残らない
Bashでコピペしたコマンドが履歴に残らないようにするには、HISTCONTROL 環境変数の設定を調整する必要があります。
原因
HISTCONTROL に ignorespace や ignoreboth が設定されている場合、先頭にスペースをつけて実行したコマンドは履歴に記録されません。
コピペの際に無意識にスペースが入っていると履歴に残らないことがあります。
対処法1: HISTCONTROL の設定を確認する
現在の設定を確認:
echo $HISTCONTROL
もし ignorespace または ignoreboth となっていたら、これが原因です。
対処法2: HISTCONTROL を変更する
スペース付きコマンドも履歴に残す:
export HISTCONTROL=ignoredups
-
ignoredups: 重複するコマンドは履歴に残さないが、スペース付きコマンドは履歴に記録する。
恒久的な対処
.bashrc に以下を追記する:
echo 'export HISTCONTROL=ignoredups' >> ~/.bashrc
source ~/.bashrc
その他の考えられる原因
- 端末エミュレータの問題: 一部のターミナルはペースト時に制御文字を挿入することがある。
-
Bashの設定:
HISTSIZEやHISTFILESIZEが小さすぎると、履歴に即座に反映されず消えることがある。 -
即時履歴保存が無効:
コマンド実行直後に履歴を即座に保存するには.bashrcに以下を追加:export PROMPT_COMMAND='history -a'
確認方法
設定後、実際にコピペでコマンドを貼り付けて、履歴を確認:
history | tail -20
これで、コピペしたコマンドが履歴に記録されるはずです。 😊
Discussion