Como echo
está embutido em todos os shells, ele não será exibido na lista de processos.
No entanto, não é confiável para dados arbitrários
Você pode usar printf '%s\n' "$PIN"
para algo mais confiável, mas note que alguns shells baseados em pdksh ainda não possuem printf
builtin. O trabalho em torno deles é usar print -r -- "$PIN"
. print
está disponível em zsh
e todas as implementações de ksh
, mas não é um comando padrão.
Você também pode usar um documento aqui:
cmd << EOF
$PIN
EOF
(ou aqui-string ( cmd <<< "$PIN"
) em zsh
e alguns outros shells agora). Mas observe que com a maioria das implementações, os documentos aqui são implementados com arquivos temporários, portanto, o PIN pode ser recuperado offline se o arquivo foi confirmado em disco.
É melhor não exportar PIN
para o ambiente se você puder evitá-lo, pois é mais facilmente detectável por outros processos (visto em /proc/pid/environ
, que processos com o mesmo uid podem ler, embora haja muitas restrições sobre o que pode ler a memória de outro processo). ps
em alguns sistemas (raros) também permitem que você veja o ambiente de qualquer processo.
Uma vez no ambiente, em alguns sistemas, há um comando printenv
para exibir seu valor:
printenv PIN
Ou você sempre pode usar perl
:
perl -le 'print $ENV{PIN}'