У меня есть исполняемый скрипт 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?
Почему бы не воспользоваться преимуществами системы Linux и ее каталога /tmp
для хранения вашего .bash_history
в более нестабильном месте?
Чтобы изменить местоположение вашего файла .bash_history
, вам необходимо установить переменная HISTFILE
. Чтобы удалить файл при каждой перезагрузке, поместите файл в каталог /tmp/
.
Вы можете добавить что-то вроде следующего в ваш файл ~/.bashrc
, чтобы эти настройки сохранялись:
HISTFILE=/tmp/.bash_history
Вы можете подтвердить, что другие пользователи не могут читать вашу историю, проверив права доступа к файлам истории файл создан:
ls -lsa /tmp/.bash_history
Это приведет к удалению истории вашего пользователя при перезагрузке, но не повлияет на других. Вы можете установить эти файлы конфигурации системного уровня, такие как /etc/bash.bashrc
, если вы действительно хотите. Вы даже можете поместить /tmp
в RAM , чтобы убедиться, что он очищен.