У меня есть исполняемый скрипт bash (.bash_history_cleaner), который очищает мою историю bash
#!/bin/bash
cat /dev/null > ~/.bash_history && history -c && exit
Я хочу выполнить этот скрипт при выключении или перезагрузке системы и следоватьэтот ответ, который использует systemdс именем службы как bash_history_cleaner.service
и включил его в systemctl. Служба запущена и работает,
[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
Его предполагаемое поведение должно быть таким, чтобы очищать мою историю bash при выключении или перезапуске. Но это не работает, я выключал и перезапускал систему много раз, но скрипт не выполняется. Как нам выполнить скрипт bash перед выключением с помощью systemd?
решение1
Почему бы не воспользоваться преимуществами системы Linux и ее /tmp
каталога для хранения ваших данных .bash_history
в более нестабильном месте?
Чтобы изменить местоположение файла .bash_history
, вам нужно задать HISTFILE
переменную. Чтобы файл удалялся при каждой перезагрузке, поместите файл в каталог /tmp/
.
~/.bashrc
Чтобы эти настройки сохранились, вы можете добавить в свой файл что-то вроде следующего :
HISTFILE=/tmp/.bash_history
Вы можете убедиться, что другие пользователи не могут читать вашу историю, проверив права доступа к созданному файлу истории:
ls -lsa /tmp/.bash_history
Это приведет к удалению истории вашего пользователя при перезагрузке, но не повлияет на других. Вы можете установить эти файлы конфигурации системного уровня, /etc/bash.bashrc
если вы действительно хотите. Вы можете дажепоместить /tmp
в оперативную памятьчтобы гарантировать его очистку.