Est-il possible d'ouvrir une session incognito bash
?
Par exemple, lorsque nous devons entrer des mots de passe dans des commandes et que nous ne voulons bash
pas les ajouter à l'historique.
secrectcommand
, ne sera pas dans l'histoire de bash.
Est-il possible d'ouvrir une session incognito bash
?
Par exemple, lorsque nous devons entrer des mots de passe dans des commandes et que nous ne voulons bash
pas les ajouter à l'historique.
secrectcommand
, ne sera pas dans l'histoire de bash.
Réponses:
Lorsque vous souhaitez bash
arrêter de consigner vos commandes, désélectionnez simplement la HISTFILE
variable:
HISTFILE=
Toutes les commandes ultérieures ne doivent alors plus être enregistrées .bash_history
.
D'autre part, si vous fournissez des mots de passe comme arguments à des commandes, vous faites déjà quelque chose de mal. .bash_history
n'est pas lisible par le monde et n'est donc pas la plus grande menace dans cette situation:
ps
et /proc
sont le gros problème. Tous les utilisateurs du système peuvent voir les commandes que vous exécutez actuellement avec tous leurs arguments . Passer des mots de passe en tant qu'arguments de ligne de commande est donc intrinsèquement peu sécurisé . Utilisez des variables d’environnement ou des fichiers de configuration (que vous avez chmodded 600) pour fournir des mots de passe en toute sécurité.
unset HISTFILE
a un effet similaire. J'ai une fonction pour cela: n() { HISTFILE=; PS1="~${PS1#\~}"; }
. De cette façon, je peux voir clairement si je suis en "mode incognito" ou non.
HISTCONTROL=ignorespace
Si cette option n’est pas déjà définie bash
, c’est peut-être ce dont vous avez besoin. C'est moins débilitant que de désactiver toute l'histoire. Avec cet ensemble, toute ligne de commande commençant par un caractère d'espacement ne sera pas enregistrée dans la liste de l'historique.
À partir de ces liens connexes:
Pourquoi bash a-t-il une option HISTCONTROL = ignorespace?
Pourquoi bash ne stocke-t-il pas les commandes commençant par des espaces?
Vous pouvez désactiver temporairement l'historique: set +o history
set +o history
...
set -o history
Il existe une différence entre la désactivation de l'historique et la désactivation HISTFILE
:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
génère quelque chose comme ceci:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
c'est-à-dire que toutes les commandes sont enregistrées dans la liste de l'historique. Tapez exit
pour le sauvegarder.
Mais
set +o history
date
ls
set -o history
history
génère quelque chose comme ceci:
115 set +o history
116 history
Résumé :
set +o history
pour les longues sessions.
HISTCONTROL
et <space>command
à un autre moment.
cat | bash
exécutera un programme non interactifbash
sans invite, édition en ligne de commande (uniquement l'éditeur interne de la discipline de ligne) ni historique.