⛳
bash でコピペで張り付けたコマンドが履歴に残らない
bash でコピペで張り付けたコマンドが履歴に残らない
Bashでコピペしたコマンドが履歴に残らないようにするには、HISTCONTROL
環境変数の設定を調整する必要があります。
原因
HISTCONTROL
に ignorespace
や ignoreboth
が設定されている場合、先頭にスペースをつけて実行したコマンドは履歴に記録されません。
コピペの際に無意識にスペースが入っていると履歴に残らないことがあります。
HISTCONTROL
の設定を確認する
対処法1: 現在の設定を確認:
echo $HISTCONTROL
もし ignorespace
または ignoreboth
となっていたら、これが原因です。
HISTCONTROL
を変更する
対処法2: スペース付きコマンドも履歴に残す:
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