Если вы работаете в Linux (или другой операционной системе с /proc/*/fd
), у вас есть еще лучший вариант: Удалить confidential.txt
, прежде чем вводить в него пароль.
Это может выглядеть примерно так:
exec 3<>confidential.txt
rm -f -- confidential.txt
printf '%s\n' "$password" >&3
... а затем прочитать из этого удаленного файла:
cat "/proc/$$/fd/3" ## where $$ is the PID of the shell that ran the exec command above
Поскольку файл уже удален , он гарантированно будет иметь право на сборку мусора вашей файловой системой в тот момент, когда ваш скрипт (или последняя программа, которая начала наследовать свои файловые дескрипторы) завершается или уничтожается, даже если он убит таким образом, чтобы не допустить возникновения ловушек или обработки сигналов.