¿Es posible abrir una sesión de incógnito en bash?
Por ejemplo, cuando necesitamos ingresar contraseñas en los comandos y no queremos bashagregarlas al historial.
secrectcommandno estará en la historia de bash.
¿Es posible abrir una sesión de incógnito en bash?
Por ejemplo, cuando necesitamos ingresar contraseñas en los comandos y no queremos bashagregarlas al historial.
secrectcommandno estará en la historia de bash.
Respuestas:
Cuando desee bashdejar de registrar sus comandos, simplemente desarme la HISTFILEvariable:
HISTFILE=
Todos los comandos adicionales ya no deberían estar registrados .bash_history.
Por otro lado, si en realidad está proporcionando contraseñas como argumentos para los comandos, ya está haciendo algo mal. .bash_historyno es legible en el mundo y, por lo tanto, no es la mayor amenaza en esta situación:
psY /procson el gran problema. Todos los usuarios del sistema pueden ver los comandos que está ejecutando actualmente con todos sus argumentos . Por lo tanto, pasar contraseñas como argumentos de línea de comandos es inherentemente inseguro . Utilice variables de entorno o archivos de configuración (que ha modificado 600) para proporcionar contraseñas de forma segura.
unset HISTFILEtiene un efecto similar Tengo una función para esto: n() { HISTFILE=; PS1="~${PS1#\~}"; }. De esa manera puedo ver claramente si estoy en "modo incógnito" o no.
HISTCONTROL=ignorespace
Si esta opción aún no está configurada bash, puede ser justo lo que necesita. Es menos debilitante que deshabilitar toda la historia. Con ese conjunto, cualquier línea de comando que comience con un carácter de espacio no se guardará en la lista del historial.
De estos enlaces relacionados:
¿Por qué bash tiene una opción HISTCONTROL = ignorespace?
¿Por qué bash no almacena comandos que comienzan con espacios?
Puedes deshabilitar temporalmente el historial: set +o history
set +o history
...
set -o history
Hay una diferencia entre deshabilitar el historial y desarmar HISTFILE:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
produce algo como esto:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
es decir, todos los comandos se guardan en la lista del historial. Escribe exitpara guardarlo.
Pero
set +o history
date
ls
set -o history
history
produce algo como esto:
115 set +o history
116 history
Resumen :
set +o historypara largas sesiones.
HISTCONTROLy <space>commanden otro momento
cat | bashejecutará unabashedición no interactiva sin solicitud de línea de comandos (solo el editor interno de la disciplina de línea) o el historial.