É possível abrir uma sessão anônima bash
?
Por exemplo, quando precisamos inserir senhas em comandos e não queremos bash
adicioná-las ao histórico.
secrectcommand
não estará na história do bash.
É possível abrir uma sessão anônima bash
?
Por exemplo, quando precisamos inserir senhas em comandos e não queremos bash
adicioná-las ao histórico.
secrectcommand
não estará na história do bash.
Respostas:
Quando você deseja bash
parar de registrar seus comandos, desative a HISTFILE
variável:
HISTFILE=
Todos os comandos adicionais não devem mais ser registrados .bash_history
.
Por outro lado, se você estiver realmente fornecendo senhas como argumentos para comandos, já estará fazendo algo errado. .bash_history
não é legível para o mundo e, portanto, não é a maior ameaça nessa situação:
ps
e /proc
são o grande problema. Todos os usuários do sistema podem ver os comandos que você está executando no momento com todos os argumentos deles . Passar senhas como argumentos de linha de comando é, portanto, inerentemente inseguro . Use variáveis de ambiente ou arquivos de configuração (que você modificou no 600) para fornecer senhas com segurança.
unset HISTFILE
tem um efeito semelhante. Eu tenho uma função para isso: n() { HISTFILE=; PS1="~${PS1#\~}"; }
. Dessa forma, posso ver claramente se estou no "modo de navegação anônima" ou não.
HISTCONTROL=ignorespace
Se essa opção ainda não estiver definida bash
, pode ser exatamente o que você precisa. É menos debilitante do que desabilitar toda a história. Com esse conjunto, qualquer linha de comando que comece com um caractere de espaço não será salva na lista de histórico.
A partir desses links relacionados:
Por que o bash tem uma opção HISTCONTROL = ignorespace?
Por que o bash não armazena comandos que começam com espaços?
Você pode desativar temporariamente o histórico: set +o history
set +o history
...
set -o history
Há uma diferença entre desabilitar o histórico e desabilitar HISTFILE
:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
gera algo como isto:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
ou seja, todos os comandos são salvos na lista de histórico. Digite exit
para salvá-lo.
Mas
set +o history
date
ls
set -o history
history
gera algo como isto:
115 set +o history
116 history
Resumo :
set +o history
para sessões longas.
HISTCONTROL
e <space>command
em outro momento.
cat | bash
executará um não-interativobash
sem prompt, edição de linha de comando (apenas o editor interno da disciplina de linha) ou histórico.