Я создаю скрипт shelll, который стирает историю команд в терминале. Но скрипт не стирает историю команд в терминале. Я следую приведенной ниже процедуре 1. Мой скрипт содержит следующие строки
#!/bin/bash
history -c
2. Я изменил файл на исполняемый
chmod +x foo.sh
3. Я запускаю скрипт
./foo.sh
, но скрипт не работает и не стирает мою историю команд. Почему?
Обновление: я альтернативно пишу сценарий, чтобы очистить историю. все та же проблема возникает. Мой альтернативный сценарий:
#!/bin/bash
# Bash Shell store history in the file ~/.bashrc
rm -r ~/.bash_history
Это также неясная история команд.
rm -f ~/.bash_history
(не используют -r
!) удалит журнал истории, который в конфигурации по умолчанию большинства дистрибутивов прочитан, когда Вы запускаете новую оболочку. Выполнение этого будет поэтому только влиять на оболочки, которые Вы запускаете после выполнения этой команды. Можно заменить текущую оболочку другим путем выполнения exec "$SHELL"
, чтобы не создавать новое окно терминала. history -c
очищает историю для текущий оболочка и не удаляет ~/.bash_history
. Но когда Вы работаете сценарий , текущая оболочка создает новый оболочка для запущения скрипта в и выходы , что оболочка, когда сценарий сделан . Вместо этого для выполнения сценария в текущий оболочка, Вы имеете к источник сценарий. В Вашем случае попытайтесь работать . foo.sh
. Я Вы хотите "очистить наши трассировки" после выхода из оболочки, Вы могли бы хотеть выполнить эти команды из своего сценария выхода из системы, который является ~/.bash_logout
файл.
, Возможно, Вы не хотите во всей своей истории команд быть сохраненными, в этом случае можно установить HISTFILESIZE=0
(в Вашем ~/.profile
файл, или в оболочке Вы используете).