我在 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 秒。