我想在每次关闭/注销时清除我的 shell 历史记录。
我知道如何手动清除历史记录,我知道如何在关闭会话/终端模拟器时自动清除历史记录。然而,这不是预期的行为。
我在 manjaro 上使用zsh
wayland 和 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 脚本来清除历史记录,并将其放置在注销或关闭时执行的位置。按着这些次序:
- 该文件可能如下所示:
#!/bin/zsh
history -c
history -w
- 使文件可执行:
chmod +x script.sh
- 配置您的 Sway (
~/.config/sway/config
),将此命令添加到配置文件的末尾:exec /path/to/the/script.sh
就是这样!