Você pode fazer isso usando substituição de processos .
. <(gpg -qd "$encrypted_filename")
Veja um exemplo:
% cat > to-source <<< 'echo "Hello"'
% . ./to-source
Hello
% gpg -e -r [email protected] to-source
% . <(gpg -qd to-source.gpg)
Hello
gpg -d
não mantém o arquivo em disco, apenas o envia para stdout. <()
usa um FIFO , o que também não resulta em dados de arquivos reais escrito em disco.
No bash, .
e source
são sinônimos, mas .
é mais portátil (faz parte do POSIX), então usei aqui. Note, no entanto, que <()
não é tão portátil - até onde eu sei, é suportado apenas em bash, zsh, ksh88 e ksh93. pdksh e mksh têm coprocessos que podem ter o mesmo efeito.