Come faccio ad aprire una sessione di navigazione in incognito?


50

È possibile aprire una sessione in incognito in bash?

Ad esempio, quando dobbiamo inserire le password nei comandi e non vogliamo bashaggiungerle alla cronologia.


9
cat | basheseguirà una modifica non interattiva bashsenza prompt, da riga di comando (solo l'editor interno della disciplina di riga) o cronologia.
Stéphane Chazelas,

Scrivi uno spazio davanti al tuo comando: 'secretcommand'. Ora secrectcommandnon sarà nella storia di Bash.
Martin Thoma,

Risposte:


79

Quando vuoi bashinterrompere la registrazione dei tuoi comandi, disattiva la HISTFILEvariabile:

HISTFILE=

Tutti gli altri comandi non dovrebbero più essere registrati .bash_history.

D'altra parte, se in realtà stai fornendo password come argomenti ai comandi, stai già facendo qualcosa di sbagliato. .bash_historynon è leggibile dal mondo e quindi non è la più grande minaccia in questa situazione:

pse /procsono il grosso problema. Tutti gli utenti del sistema possono vedere i comandi che stai attualmente eseguendo con tutti i loro argomenti . Il passaggio di password come argomenti della riga di comando è quindi intrinsecamente insicuro . Utilizzare variabili di ambiente o file di configurazione (che sono stati scelti 600) per fornire password in modo sicuro.


5
Uso Linux da oltre 10 anni e non ho mai pensato di fare questo +1
eyoung100

3
unset HISTFILEha un effetto simile. Ho una funzione per questo: n() { HISTFILE=; PS1="~${PS1#\~}"; }. In questo modo posso vedere chiaramente se sono in "modalità di navigazione in incognito" o no.
Lekensteyn,

13
+1 per affrontare il problema reale piuttosto che semplicemente rispondere alla domanda. Un'opzione aggiuntiva per il trasferimento delle credenziali sono i socket di dominio Unix.
Nathan Osman,

1
Un altro suggerimento utile sarebbe quello di mettere uno spazio prima, ad esempio "HISTFILE =". qualsiasi comando con spazio prima non viene registrato.
FUD

Un'altra cosa interessante di questo è che anche i comandi precedenti su quella finestra vengono ignorati. È come trasformare la sessione esistente in incognito: p
Uzumaki D. Ichigo il

37
HISTCONTROL=ignorespace

Se questa opzione non è già impostata per bash, potrebbe essere proprio quello che ti serve. È meno debilitante che disabilitare tutta la storia. Con questo set, qualsiasi riga di comando che inizia con un carattere spazio non verrà salvata nell'elenco cronologico.

Da questi collegamenti correlati:

Perché bash ha un'opzione HISTCONTROL = ignorespace?

Perché bash non memorizza i comandi che iniziano con gli spazi?


6
Nota che questo è spesso il valore predefinito.
Ángel,

3

Puoi disabilitare temporaneamente la cronologia: set +o history

set +o history
...
set -o history

C'è una differenza tra la disabilitazione della cronologia e il disinserimento HISTFILE:

HISTFILE=
date
ls
HISTFILE=~/.bash_history
history

produce qualcosa del genere:

84  HISTFILE=
85  date
87  ls
88  HISTFILE=~/.bash_history
89  history

cioè tutti i comandi vengono salvati nell'elenco cronologico. Digita exitper salvarlo.
Ma

set +o history
date
ls
set -o history
history

produce qualcosa del genere:

115  set +o history
116  history

Riepilogo :
set +o historyper sessioni lunghe.
HISTCONTROLe <space>commandaltre volte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.