Apenas force-o a usar o builtin:
builtin echo foo
Se echo
não for incorporado, isso falhará.
Isso será visível na listagem do processo se a linha abaixo for executada a partir de uma linha de comando ou de um script de shell
bash -c "echo $password"
ou
eu só preciso fazer echo $password
de dentro do bash em uma linha de comando ou dentro do script de shell bash
existe algum teste que eu possa fazer para verificar essa visibilidade?
Eu estava apenas tentando isso, mas não consegui vê-lo na listagem de processos com ps -ef | grep testscript
testscript:
i=0
while (( i < 100 ))
do
((i=i+1))
sleep 1
echo $$
echo hello
uname
done
Os argumentos para um builtin nunca aparecerão em qualquer ps
output, porque o builtin não é um programa separado com sua própria linha de comando. Todos os shells modernos (exceto algumas configurações altamente despojadas do BusyBox), incluindo todas as versões bash, possuem echo
embutido.
Se você estiver chamando bash -c "echo $password"
, a senha será exibida para todos, porque ela está incorporada no comando que você executa com bash
. Chamar um shell apenas para chamar seu comando echo
é inútil, portanto, esperamos que você não esteja fazendo isso.
Não há problema em colocar a senha em uma variável de ambiente, se você precisar passá-la para um processo diferente. Ao contrário dos argumentos de linha de comando, as variáveis de ambiente não são expostas a outros usuários no Linux e na maioria dos outros unices.
Tags ps security echo shell shell-script