Eu tenho um script bash executável (.bash_history_cleaner) que limpa meu histórico do bash
#!/bin/bash
cat /dev/null > ~/.bash_history && history -c && exit
Quero executar este script ao desligar ou reiniciar o sistema e seguiresta resposta que usa systemdcom o nome do serviço como bash_history_cleaner.service
e habilitou-o no systemctl. O serviço está instalado e funcionando,
[Unit]
Description=Bash History Cleaner
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/eka/Scripts/.bash_history_cleaner
[Install]
WantedBy=multi-user.target
Seu comportamento pretendido deve ser limpar meu histórico do bash ao desligar ou reiniciar. Mas não está funcionando, desliguei e reiniciei o sistema várias vezes, mas o script não foi executado. Como executamos um script bash antes do desligamento usando o systemd?
Responder1
Por que não aproveitar as vantagens do sistema Linux e de seu /tmp
diretório para armazenar seus arquivos .bash_history
em um local mais volátil?
Para alterar a localização do seu .bash_history
arquivo, você precisa definir a HISTFILE
variável. Para que o arquivo seja excluído a cada reinicialização, coloque o arquivo no /tmp/
diretório.
Você pode adicionar algo como o seguinte ao seu ~/.bashrc
arquivo para que essas configurações persistam:
HISTFILE=/tmp/.bash_history
Você pode confirmar que outros usuários não conseguem ler seu histórico verificando as permissões do arquivo de histórico criado:
ls -lsa /tmp/.bash_history
Isso fará com que o histórico do seu usuário seja removido na reinicialização, mas não afetará outros. Você pode definir esses arquivos de configuração no nível do sistema, /etc/bash.bashrc
se realmente desejar. Você também podecolocar /tmp
na RAMpara garantir que ele seja limpo.