чистый сценарий истории не работает

Я создаю скрипт для запуска в запуске, который говорит:

_cleanthehistory ()
{
/bin/echo "cleaning the history"
history -c
}
_cleanthehistory

Дело в том, что это не работает из сценария, но если я запустил его из командной строки работает. Есть идеи? Заранее спасибо. Пабло.

0
задан 13 June 2012 в 19:32

11 ответов

История доступна только для интерактивных оболочек, а не для скриптов. Таким образом, в скрипте history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, поскольку /tmp освобождается во время загрузки, просто обрезайте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Это использует перенаправление оболочки без команды. Он заставляет оболочку просто открывать файл для записи (обрезая его, если он уже существует), а затем закройте его, не приписывая ему ничего (так как нет никакой команды писать что-либо к нему).

На боковой ноте , не используйте абсолютные пути к командам в сценариях. Например. используйте echo, а не /bin/echo.

update: или если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в свой ~/.bashrc.

0
ответ дан 25 July 2018 в 19:33

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 2 August 2018 в 01:33

История доступна только для интерактивных оболочек, а не для скриптов. Таким образом, в скрипте history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, поскольку /tmp освобождается во время загрузки, просто обрезайте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Это использует перенаправление оболочки без команды. Он заставляет оболочку просто открывать файл для записи (обрезая его, если он уже существует), а затем закройте его, не приписывая ему ничего (так как нет никакой команды писать что-либо к нему).

На боковой ноте , не используйте абсолютные пути к командам в сценариях. Например. используйте echo, а не /bin/echo.

update: или если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в свой ~/.bashrc.

0
ответ дан 4 August 2018 в 17:10

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 4 August 2018 в 17:10

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 6 August 2018 в 01:48

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 7 August 2018 в 19:17

История доступна только для интерактивных оболочек, а не для скриптов. Таким образом, в скрипте history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, поскольку /tmp освобождается во время загрузки, просто обрезайте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Это использует перенаправление оболочки без команды. Он заставляет оболочку просто открывать файл для записи (обрезая его, если он уже существует), а затем закройте его, не приписывая ему ничего (так как нет никакой команды писать что-либо к нему).

На боковой ноте , не используйте абсолютные пути к командам в сценариях. Например. используйте echo, а не /bin/echo.

update: или если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в свой ~/.bashrc.

0
ответ дан 7 August 2018 в 19:17

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 10 August 2018 в 07:46

История доступна только для интерактивных оболочек, а не для скриптов. Таким образом, в скрипте history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, поскольку /tmp освобождается во время загрузки, просто обрезайте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Это использует перенаправление оболочки без команды. Он заставляет оболочку просто открывать файл для записи (обрезая его, если он уже существует), а затем закройте его, не приписывая ему ничего (так как нет никакой команды писать что-либо к нему).

На боковой ноте , не используйте абсолютные пути к командам в сценариях. Например. используйте echo, а не /bin/echo.

update: или если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в свой ~/.bashrc.

0
ответ дан 10 August 2018 в 07:46

Как я уже сказал в своем комментарии history -c, просто удаляется история текущего сеанса, т. е. выполняются только команды, выполняемые вашим скриптом. Чтобы очистить все данные, включая старые сеансы, вам нужно будет сделать что-то вроде

rm -f $HOME/.bash_history
1
ответ дан 15 August 2018 в 19:50

История доступна только для интерактивных оболочек, а не для скриптов. Таким образом, в скрипте history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, поскольку /tmp освобождается во время загрузки, просто обрезайте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Это использует перенаправление оболочки без команды. Он заставляет оболочку просто открывать файл для записи (обрезая его, если он уже существует), а затем закройте его, не приписывая ему ничего (так как нет никакой команды писать что-либо к нему).

На боковой ноте , не используйте абсолютные пути к командам в сценариях. Например. используйте echo, а не /bin/echo.

update: или если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в свой ~/.bashrc.

0
ответ дан 15 August 2018 в 19:50
  • 1
    Спасибо @geirha Я пробовал это, но не работал тоже, действительно странно, на сервере debian работает как шарм, но не в ubuntu. – pma083 30 March 2012 в 23:34
  • 2
    @ pma083 Как именно вы запускаете его при запуске? – geirha 30 March 2012 в 23:37

Другие вопросы по тегам:

Похожие вопросы: