假设您使用的是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
由于该文件已被删除 ,因此即使脚本(或它开始继承其文件描述符的最后一个程序)退出或被杀死,也可以保证文件系统有资格进行垃圾回收,即使该文件被杀死的方式不是允许进行陷阱或信号处理。