終了/ログアウト時にシェル履歴を消去する

終了/ログアウト時にシェル履歴を消去する

終了/ログアウトするたびにシェル履歴を消去したいと思います。

記録を手動で消去する方法と、セッション/端末エミュレータを閉じたときに自動的に記録を消去する方法を知っています。ただし、これは予想される動作ではありません。

zsh私はウェイランドを使用し、manjaroで揺れます。

.zlogoutを使ってみました。しかし、私が理解したところによれば、これはログインシェル用であるため動作しません(ログインシェルを構成することが何であるかわかりません)。

答え1

systemdあなたが(私が知っている限り、どのmanjaroになるべきかを)使用している場合、1つのオプションは停止したときに履歴の削除を成功させ、実行する簡単なサービスです。次に、次のようにしてください default.target

[Unit]
Description=Delete zsh-history on logout/shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/grbll/bin/zsh-remover.sh

[Install]
WantedBy=default.target

ユーザーサービス項目の例:~/.config/systemd/user/zsh-history-wipe.service

永続的にアクティブ化し、実行後に現在のセッションに対してアクティブ化するために使用されます。

systemctl --user enable zsh-history-wipe
systemctl --user start zsh-history-wipe

最後のログアウトまたは終了時にすべてのサービスが停止したため、最終的にExecStop- コマンドが実行されます。明らかに停電などの状況には適用されません。

ユーザーの遅延を無効にする必要があることに注意してください。

答え2

履歴を消去し、ログアウトまたはシャットダウン時に実行される場所に配置するシェルスクリプトを生成できます。この順序で:

  1. ファイルは次のようになります。
#!/bin/zsh
history -c
history -w
  1. ファイルを実行可能にします。chmod +x script.sh
  2. Sway( ~/.config/sway/config) を設定するには、設定ファイルの最後に次のコマンドを追加します。exec /path/to/the/script.sh

それだけです!

関連情報