Não consigo reproduzir o problema que você mencionou com a senha sendo exibida na saída do comando history
.
A senha exibida na saída de printenv
e export -p
está funcionando conforme o esperado. Esses comandos exibem as variáveis de ambiente e é aí que você coloca a string http_proxy
.
As variáveis de ambiente são automaticamente herdadas por processos filhos, mas não por outros processos. Não vejo por que você acha que isso é uma grande preocupação, pois é visível apenas para processos dentro do mesmo domínio de segurança.
Mas você pode parar de colocá-lo em uma variável de ambiente e, em vez disso, usar variáveis normais do shell. Então, não seria herdado pelos processos filhos. Como você provavelmente deseja que o curl tenha acesso à variável de ambiente, você poderia passar a variável de ambiente para apenas aquele comando e não todos os outros comandos.
#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password
proxy="http://$user:$password@$domain:$portnum"
if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
echo NO CONNECT
else
echo OK
fi