关闭/注销时清除 shell 历史记录

关闭/注销时清除 shell 历史记录

我想在每次关闭/注销时清除我的 shell 历史记录。

我知道如何手动清除历史记录,我知道如何在关闭会话/终端模拟器时自动清除历史记录。然而,这不是预期的行为。

我在 manjaro 上使用zshwayland 和 sway。

我尝试过使用 .zlogout。但是,据我了解,这不起作用,因为它是针对登录 shell 的(我不知道是什么构成了登录 shell)。

答案1

如果你碰巧使用systemd(据我所知,manjaro 应该是哪个),一个选择是一个简单的服务,它会成功并在停止时执行历史记录删除。然后使其依赖于 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

您可以创建一个 shell 脚本来清除历史记录,并将其放置在注销或关闭时执行的位置。按着这些次序:

  1. 该文件可能如下所示:
#!/bin/zsh
history -c
history -w
  1. 使文件可执行:chmod +x script.sh
  2. 配置您的 Sway ( ~/.config/sway/config),将此命令添加到配置文件的末尾:exec /path/to/the/script.sh

就是这样!

相关内容