コマンドが履歴に追加されないようにする方法はありますか?履歴ファイルに保存したくないコマンドがあり、メモリに保存されている履歴を検索するときにそこに保存することはあまり気にしませんが、それは心配ではありません。これを防ぐ方法はありますか、または戻って履歴ファイルを編集する必要がありますか?
更新:これがシェル固有である可能性があることを知りませんでした。私のシェルはzsh
。他のシェルについても回答してください。そうすれば、シェルでこれを行う方法がわかります。
コマンドが履歴に追加されないようにする方法はありますか?履歴ファイルに保存したくないコマンドがあり、メモリに保存されている履歴を検索するときにそこに保存することはあまり気にしませんが、それは心配ではありません。これを防ぐ方法はありますか、または戻って履歴ファイルを編集する必要がありますか?
更新:これがシェル固有である可能性があることを知りませんでした。私のシェルはzsh
。他のシェルについても回答してください。そうすれば、シェルでこれを行う方法がわかります。
回答:
ZSHの場合:
最初にに挿入setopt HIST_IGNORE_SPACE
します~/.zshrc
。再びログインした後、履歴に保存したくないコマンドの前にを付けることができますspace
。
マニュアル、以下の3つのオプションは、特定の行がすべてで歴史に行くべきではないことを言うために使用することができます。
| somecommand
preexec
そのために使用できるフック関数を提供します。ゼロ以外を返す場合、コマンドは履歴に保存されません。
setopt HIST_IGNORE_SPACE
にある~/.zshrc
コマンドを何度も実行している場合は、シェルの履歴無視機能を使用することをお勧めします。sshへのsecret.server.comやFTPファイルなどがあり、secret.server.comに言及する行を保存したくないとしましょう。
でbash
設定します
HISTIGNORE="*secret.server.com*"
一方zsh
、パラメータでは
HISTORY_IGNORE="*secret.server.com*"
複数のパターンをコロンで区切ってリストできます。各パターンは完全な入力行と照合されるため、*を含める必要がある場合があります。たとえば、以下はfortune
履歴から除外しますが、保存しfortune -l
ます:
HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*:ytalk*:fortune"
HISTIGNOREを設定すると、リストに一致するものは何も.bash_history
/ に保存され.zsh_history
ず、通常は前のコマンドを呼び出す上矢印キーも、パターンに一致すると機能しません。
HISTIGNORE="^fortune*"
無視するfortune -l
が保持するようなものmyfortune
ですか?
一回限りの最も簡単な方法は
$ $SHELL
$$ unset HISTFILE
$$ secret-command
$$ exit
$
where $
は初期シェル$$
のプロンプトを表し、サブシェルのプロンプトを表します。これはbashとzshで機能します。ksh HISTFILE=/notwritable
では代わりに必要です。重要なのはHISTFILE
、コマンドが実行されるときではなく、履歴ファイルが書き込まれるときの値であることに注意してください。Bash、ksh、およびzshは、終了時に履歴ファイルに書き込みます(zshは構成に応じてより頻繁に実行できます)。
または、bashまたはzshを取得して、特定のパターンに一致する行を無視することができます(これは既に他の回答でカバーされています)。
zshの別の可能性は
% fc -p
% secret-command
% fc -P
fc -p
現在の履歴リストをスタックにプッシュし、保存ファイルに関連付けられていない新しい履歴リストを開始します。fc -P
未保存の履歴リストをスタックからポップし、それを完全に忘れます。
プロセスの実行中に、コマンドとその引数(および一部のシステムではその環境も)がプロセステーブル(ps
出力)に表示されます。ルートは、システムアカウンティングデータベース内の過去のコマンドを表示でき、制御なしでさらにログを記録できます。また、実行したコマンド(ファイルの変更時間など)を大まかに示すことができる、あらゆる種類のフォレンジックエビデンスが存在する可能性があります。そのため、盗聴者に対するプライバシーを守ることはできません。