Existe alguma maneira de impedir que um comando seja adicionado ao seu histórico? Tenho um comando que quero manter fora do meu arquivo de histórico e realmente não me importo de tê-lo lá quando pesquiso o histórico armazenado na memória, embora isso seja menos preocupante. Existe alguma maneira de evitar isso ou preciso apenas voltar e editar meu arquivo de histórico.
atualização: eu não sabia que isso poderia ser específico do shell. Minha concha é zsh
. Você pode responder a outras conchas para que as pessoas saibam como fazer isso em sua concha.
bash
security
zsh
command-history
xenoterracida
fonte
fonte
Respostas:
Em ZSH :
Primeiro insira
setopt HIST_IGNORE_SPACE
no seu~/.zshrc
. Agora, depois de fazer login novamente, você pode prefixar os comandos que não deseja que sejam armazenados no histórico com aspace
.No manual do usuário , as três opções a seguir podem ser usadas para dizer que determinadas linhas não devem entrar no histórico:
fonte
| somecommand
preexec
que pode ser usada para isso. Se retornar diferente de zero, o comando não será salvo no histórico.setopt HIST_IGNORE_SPACE
in~/.zshrc
Se você estiver executando o comando repetidamente, convém usar o recurso de ignorar o histórico do seu shell. Digamos que você tenha secret.server.com para o qual você ssh, arquivos FTP etc., que você não deseja que nenhuma linha que mencione secret.server.com seja salva:
Em
bash
você definiriaenquanto que no
zsh
parâmetro é chamadoVocê pode listar vários padrões com dois pontos separando-os. Observe que cada padrão é comparado com a linha de entrada completa ; portanto, você pode precisar incluir um *. Por exemplo, o seguinte excluirá
fortune
do histórico, mas armazenaráfortune -l
:Com HISTIGNORE definido, nada que corresponda aos padrões que você lista será salvo
.bash_history
/.zsh_history
e até a tecla de seta para cima, que normalmente lembra o comando anterior, não funcionará se corresponder ao seu padrão.fonte
HISTIGNORE="^fortune*"
ignorar,fortune -l
mas mantermyfortune
?No bash, use a
HISTCONTROL
variávelDefina para
HISTCONTROL=ignorespace
(ouHISTCONTROL=ignoreboth
). A partir de agora, quando você iniciar uma linha com um espaço , ela não será salva no histórico. Isso evita incluir o comando a não ser divulgado em algum arquivo de configuração.Mesmo assim, acontece que você esquece de adicionar o espaço e depois quer voltar. Para excluir uma entrada no histórico, use
history -d <index>
, comindex
o número encontrado com ohistory
comando (primeira coluna).fonte
zsh
?A maneira mais fácil de fazer uma viagem única é
onde
$
representa o prompt do shell inicial e$$
representa o prompt do subshell. Isso funciona no bash e no zsh; em ksh você precisaHISTFILE=/notwritable
. Observe que o que importa é o valor deHISTFILE
quando o arquivo de histórico é gravado, não quando o comando é executado. Bash, ksh e zsh gravam no arquivo de histórico quando eles saem (o zsh pode fazer isso com mais frequência, dependendo da configuração).Como alternativa, você pode fazer com que o bash ou o zsh ignore as linhas correspondentes a determinados padrões (isso já é coberto por outras respostas).
Outra possibilidade no zsh é
fc -p
coloca a lista de histórico atual em uma pilha e inicia uma nova que não está associada a um arquivo salvo.fc -P
aparece aquele histórico não salvo da lista e esquece completamente.Enquanto um processo estiver em execução, o comando e seus argumentos (e em alguns sistemas também o ambiente) serão exibidos na tabela de processos (
ps
saída). O Root pode ver comandos passados no banco de dados de contabilidade do sistema e pode fazer mais registros sem o seu controle. E provavelmente haverá todo tipo de evidência forense que pode mostrar aproximadamente qual comando você executou (como tempos de modificação de arquivo). Portanto, você não obtém privacidade contra bisbilhoteiros determinados.fonte