我在 Debian 上使用 Thunderbird 68。
对于我发送的任何电子邮件,Thunderbird 在 /tmp 中创建临时文件:
/tmp/nsmail.tmp
/tmp/nsmail-1.tmp
/tmp/nsmail-2.tmp
/tmp/nscopy.tmp
/tmp/nscopy-1.tmp
这些文件不仅在电子邮件发送后不会被删除,更糟糕的是,在 Thunderbird 关闭后它们仍保留在那里。
我发现在发送电子邮件后不立即删除临时文件是一种非常糟糕的做法。而且绝对令人愤慨的是,即使应用程序退出也不会清理其临时文件。
作为解决方法,我可以更改创建这些临时文件的位置吗?例如,使用~/.cache/thunderbird/
会更合适。
答案1
此错误是在 v68.x 中引入的,尚未修复。经过调查,具体情况如下:
错误详情:
Thunderbird 从早期版本开始在发送电子邮件时确实使用~/tmp/ns*
,但它也会在使用后立即删除这些临时文件,而 tb 仍然打开。在 v68.xa 编码错误上,thunderbird 尝试删除该位置上的那些临时文件/tmp/ns...
,而不是~/tmp/ns...
设置$TMPDIR
变量来/tmp
解决问题。 (等待上游更新)
解决方案:
使用以下命令运行 Thunderbird 将解决该问题(类似于其他答案)
export TMPDIR=/tmp; thunderbird;
答案2
此错误是在 v68.x 中引入的,尚未修复,此处等待修复是一种解决方法,请注意,tmp/ns*
TB v68 需要文件才能正常工作。
解决方法一:
正如评论中所建议的,可以使用自定义临时文件,然后可以对该特定临时文件夹应用不同的限制,另请注意,环境变量更改不需要广泛应用。
通过将行更改为以下命令来编辑.desktop
用于运行 Thunderbird 的文件(通常在 下/usr/share/applications
)Exec=
或者使用给定的命令启动 Thunderbird:
export TMPDIR=/home/my/new/tmpdir; export TMP=$TMPDIR; thunderbird; rm -rf /home/my/new/tmpdir/ns*
这将设置$TMPDIR
并$TMP
变量到自定义位置,然后运行 Thunderbird,最后在关闭时rm -rf /home/my/new/tmpdir/ns*
删除 tmp 剩余部分。
请注意 env。如果从bash
或文件运行,变量更改只会影响 Thunderbird .desktop
。否则,如果直接从终端运行此命令,则更改$TMP
将影响此命令之后启动的命令。
解决方法二:
当使用 Thunderbird 时,我们可以使用脚本来手动完成这项工作;为此,我们将.desktop
使用以下内容编辑文件:
Exec=env TMPDIR=/tmp /usr/bin/thunderbird & /path/to/watch-tb-script.sh
哪里cat watch-tb-script.sh
会是:
#!/bin/sh
[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
while [[ "$?" == 0 ]]
do
for i in /tmp/ns*; do
if [ -f "$i" ]; then
rm -rf $i;
sleep 10s;
fi;
done;
sleep 60s;
[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
done;
该脚本将在 Thunderbird 打开时继续运行,检查/tmp/ns*
文件并每 10 秒删除每个文件,然后该脚本将在下一次检查之前休眠 60 秒。