Você realmente quer dizer que os comandos exigem que você especifique sua senha como um argumento? A maioria dos comandos solicita isso, e isso não entrará em nenhum arquivo de histórico.
Observe que, se você estiver usando uma máquina multiusuário, outro usuário poderá ver os comandos executados se eles chamarem ps
na hora certa. Então a batalha é perdida a menos que você chame reforços como uma máquina virtual.
Ok, vamos supor que seus comandos estejam realmente mal escritos ou que você não queira deixar rastros desses comandos por algum outro motivo.
Todos os shells com um recurso de histórico permitem que você o desligue (cada um tem seu próprio comando para isso), e muitos podem excluir certos comandos da lista de histórico (ou seja, não apenas excluí-los do arquivo de histórico, mas até mesmo eles inacessíveis ao comando Up (alguém despejando sua memória RAM ainda pode encontrá-los) No bash e zsh, o histórico não será salvo quando o shell sair se HISTFILE
não estiver definido (note que zsh também pode salvar o histórico após cada comando se a opção inc_append_history
estiver ativada.No bash e as linhas que correspondem ao padrão em HISTIGNORE
não são registradas no histórico, em zsh, você só pode decidir ignorar comandos iniciados com um espaço com a opção hist_ignore_space
. Ambos os shells permitem que você edite seu histórico com o fc
incorporado.
Qualquer coisa que você digita e que esteja visível na tela é armazenada no histórico do seu terminal. Isso geralmente é fácil de limpar (geralmente por meio de uma entrada de menu ou simplesmente saindo do emulador de terminal). É claro que você não deve usar um terminal que registra toda a saída, mas se você estiver, é provavelmente porque você a configurou, então você saberá.
Se você estiver preocupado com uma sequência específica, como uma senha, poderá armazená-la em um arquivo (que você guarda em um sistema de arquivos criptografado, é claro) e recuperar seu conteúdo quando precisar (dessa forma, alguém procurando por cima do seu ombro não terá a chance de ver a senha):
mycommand -u herms -p "$(cat ~/encrypted/passwords/mycommand)"
É possível que o comando deixe outras migalhas para trás. Você pode tentar executar um shell com a variável de ambiente HOME
definida para um diretório temporário onde você acabou de copiar o shell rc e os arquivos de configuração para o seu comando. Depois de executar o comando, verifique se deseja manter os dados produzidos e, em seguida, remova o diretório temporário. Sessão de amostra:
mkdir /tmp/private
chmod 700 /tmp/private
cp -a ~/.zshrc ~/.config/mycommand /tmp/private
HOME=/tmp/private zsh
# subsequent commands are executed from the child shell started above
cd
mycommand ...
exit
# back to the parent shell
# inspect /tmp/private for files you want to keep
rm -rf /tmp/private
Se você estiver preocupado com mais do que proteger senhas, uma abordagem mais radical é criar um usuário diferente e executar seu comando como esse usuário. Isso tem a vantagem de que, mesmo que o comando seja mal escrito, não deixará a saída comprometida em seu diretório pessoal, porque ele não tem permissão. Você pode configurar o shell desse usuário para não deixar um histórico e limpar seu diretório inicial como quiser.