2 votos

¿Utilizar launchd para borrar el historial de bash?

Aclaración: No estoy buscando destruir history Estoy buscando medios para purgarlo periódicamente a través de launchd por motivos de seguridad

Han estado usando cat /dev/null > ~/.bash_history para borrar el historial de bash como han visto en muchas conversaciones de *nix como la forma más eficaz de hacerlo.

Así que lo puse en un shell script que se ejecuta en launchd Sin embargo, después de algún tiempo me he dado cuenta de que, aunque se ejecuta, no borra el historial.

¿Es posible borrar el historial de bash de esta manera a través de bash script o sólo se puede hacer manualmente como usuario? ¿Quizás tenga que ejecutar el comando directamente en el .plist y no a través de un bash script?

Nota: Tengo otros scripts que se ejecutan correctamente a través de launchd por lo que la pregunta es estrictamente sobre poder borrar el historial a través de un agente

Gracias

Actualización: Encontré este sitio genial que ayuda a generar launchd scripts si esto ayuda a alguien. No puedo responder por ello pero es mucho más fácil que hackear XML. Parece que utiliza sh -c para todos los comandos, sin embargo, así que no estoy seguro de por qué es.

generador de plist de launchd http://launched.zerowidth.com/

5voto

Jose Chavez Puntos 645

Parece que has dado con una solución muy enrevesada al problema de no querer un bash_history.

Te aconsejo que en lugar de borrar periódicamente el historial de launchd, simplemente desactives el registro del historial:

echo 'set +o history' >> ~/.bashrc

Cierra la pestaña del terminal y abre una nueva, y tu historial ya no quedará registrado.

5voto

Joel Puntos 112

Su bash consiste en dos "historias", no en una. Uno de estos historiales se almacena en un archivo - su tamaño/profundidad se rige por el parámetro HISTFILESIZE . El otro historial se almacena en la memoria - su tamaño se rige por el parámetro HISTSIZE .

Puede comprobar los tamaños/profundidad de sus historiales:

$ echo $HISTFILESIZE 
$ echo $HISTSIZE

La razón de las dos historias es que una está asociada a cada sesión de shell ( HISTSIZE ), mientras que el otro historial es un archivo ~/.bash_history que es "permanente", y eventualmente recibe los historiales de la sesión cuando sobrepasan su profundidad máxima, o cuando la sesión es terminada. Esto es un poco complicado de explicar, y la imagen de abajo puede ayudar a aclarar la relación entre estos dos historiales.

Pero volvamos a su objetivo:

En lugar de tomar medidas para eliminar su historial, podría simplemente establecer HISTSIZE y HISTFILESIZE a cero en ~/.bashrc :

HISTSIZE=0
HISTFILESIZE=0

Si no es eso lo que quieres, puedes eliminar el archivo del historial periódicamente, pero debes saber que eso no elimina el historial de sesiones . Borrar su archivo de historia mediante la construcción de un .plist no es necesario. La página web history es la herramienta que debe utilizarse para este trabajo (véase history --help para más detalles). El siguiente comando borrará un historial de sesiones :

$ history -cw

Borrar el contenido del archivo histórico ( ~/.bash_history ) se hace de forma convencional:

$ > ~/.bash_history

Puedes poner uno o ambos comandos en un crontab pero tendrá que asegurarse de que el shell por defecto es bash como history es un incorporado .

Para conocer algunos antecedentes relacionados con el tema de la historia de las conchas, podría lea esta pregunta y respuesta relacionada . Se refiere a zsh - no bash pero los principios son los mismos.

enter image description here

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X