Usando launchd per cancellare la cronologia di bash?
Chiarimento: non sto cercando di distruggere
history, sto cercando mezzi per eliminarlo periodicamentelaunchdper motivi di sicurezza
Ho usato cat /dev/null > ~/.bash_historyper cancellare la cronologia di bash come si è visto in molte conversazioni * nix come il modo più efficace per farlo.
Quindi l'ho inserito in uno script di shell che viene eseguito launchd, ma dopo un po 'di tempo mi sono reso conto che sebbene funzioni non cancella la cronologia.
È possibile cancellare la cronologia di bash in questo modo tramite lo script bash o può essere fatto solo manualmente come utente? Forse ho bisogno di eseguire il comando direttamente nel .plist e non tramite uno script bash?
Nota: ho altri script in esecuzione correttamente tramite launchd, quindi la domanda è strettamente sulla possibilità di cancellare la cronologia tramite un agente
Grazie
Aggiornamento: trovato questo fantastico sito che aiuta a generare
launchdscript se questo aiuta qualcuno. Non posso garantirlo, ma è molto più facile che hackerare XML. Sembra essere utilizzatosh -cper tutti i comandi, quindi non sono sicuro del perché.launchd plist generator http://launched.zerowidth.com/
Risposte
La tua bashstoria è composta da due "storie", non una. Una di queste cronologie è memorizzata in un file: la sua dimensione / profondità è regolata dal parametro HISTFILESIZE. L'altra cronologia è memorizzata nella cache: la sua dimensione è regolata dal parametro HISTSIZE.
Puoi controllare le dimensioni / profondità delle tue storie:
$ echo $HISTFILESIZE
$ echo $HISTSIZE
Il motivo di due storie è che una è associata a ciascuna sessione di shell ( HISTSIZE), mentre l'altra è un file ~/.bash_history"permanente" e alla fine riceve le cronologie di sessione quando superano la loro profondità massima o quando la sessione viene terminata. È un po 'complicato da spiegare e l'immagine qui sotto può aiutare a rendere chiara la relazione tra queste due storie.
Ma torniamo al tuo obiettivo:
Anziché procedere per eliminare la cronologia, potresti semplicemente impostare HISTSIZEe HISTFILESIZEazzerare ~/.bashrc:
HISTSIZE=0
HISTFILESIZE=0
Se non è quello che vuoi, puoi certamente eliminare periodicamente il file della cronologia, ma sappi che non elimina la cronologia della sessione . .plistNon è necessario eliminare il file della cronologia creando un file. Il historycomando è lo strumento da utilizzare per questo lavoro (vedere history --helpper i dettagli). Il seguente comando eliminerà una cronologia di sessione :
$ history -cw
L'eliminazione del contenuto dal file di cronologia ( ~/.bash_history) viene eseguita in modo convenzionale:
$ > ~/.bash_history
Si potrebbe mettere uno o entrambi questi comandi in uno crontab, ma sarà necessario garantire la shell di default è bashcome historyè un built-in .
Per alcune informazioni di base sull'argomento della cronologia della shell, puoi leggere queste domande e risposte correlate . Riguarda zsh- no bash, ma i principi sono gli stessi.
Sembra che tu abbia trovato una soluzione molto contorta al problema di non volere una bash_history.
Vorrei consigliare che invece di cancellare periodicamente la cronologia da launchd, dovresti semplicemente disabilitare la registrazione della cronologia:
echo 'set +o history' >> ~/.bashrc
Chiudi la scheda del terminale e aprine una nuova e la tua cronologia non verrà più registrata.