Parfois, parce qu'on a pas le choix, on doit passer un mot de passe en argument d'une commande. Et bien sûr, en bon parano, on ne souhaite pas que ce mot de passe finisse enregistré dans l'historique du shell.

Par exemple, la dernière fois que cela m'est arrivé, c'était pour définir le proxy :

export HTTP_PROXY='http://user:PASSWORD@proxy:port/'

Jusqu'à présent, je prenais soin d'empêcher tout bonnement l'enregistrement de l'historique sur disque à la fin de la session avec un

unset HISTFILE

Redoutablement efficace, mais cela a tout de même l'inconvénient d'être un peu violent : aucun historique de la session n'est gardé. En plus, tant qu'on ne s'est pas déconnecté, c'est quand même toujours dans l'historique (en mémoire).

La solution plus propre, pour éviter qu'une commande ne soit enregistrée dans l'historique, c'est simplement de la faire précéder par... une espace

user@localhost:~# █export HTTP_PROXY='http://user:PASSWORD@proxy:port/'

Ainsi, la commande n'est pas enregistrée dans l'historique, ni en mémoire, ni sur disque à la fin de la session, mais toutes les autres commandes y seront.

Cela fonctionne avec zsh nativement, et avec bash en fonction de la configuration. Par défaut, c'est activé sur ubuntu 13.04, si ce n'est pas le cas dans votre bash, cela s'active en ajoutant ignorespace à la variable HISTCONTROL

HISTCONTROL=ignorespace 

Je vous recommande par ailleurs la découverte de cette variable HISTCONTROL en lisant http://voidandany.free.fr/index.php/astuce-bash-la-variable-histcontrol/


Comments

comments powered by Disqus