Shell
為 ssh 會話單獨的 bashrc 文件以避免 Unison 錯誤
最近,每當我嘗試在筆記型電腦和 PC 之間進行同步時,我的 Unison 開始拋出一些奇怪的錯誤。我意識到我已經添加了一行,
bashrc
每當我打開終端時都會列印我的待處理任務。在我的添加的行
bashrc
:task list #this command comes from a small utility called taskwarrior
錯誤在這裡:
Received unexpected header from the server: expected "Unison 2.40\n" but received "\nID Proj Age Description\n-- -------- --- -----------------------------\n 2 11d Do the research work\n 3 Life 11d Get stickynotes from stationary\n 1 Technical 11d Fix the error\n\n3 tasks\n", which differs at "\n". This can happen because you have different versions of Unison installed on the client and server machines, or because your connection is failing and somebody is printing an error message, or because your remote login shell is printing something itself before starting Unison.
如錯誤日誌中所述,
my login shell is printing something itself before starting Unison
. 這確實是問題的根源。所以,現在我有兩個問題:
- 如何讓我的 bashrc 在 Unison 標頭之後列印“任務列表”消息?或者,我可以讓 ssh 會話載入單獨的 RC 文件,以便根本不列印“任務列表”嗎?
- 列印任何東西都安全嗎?我的意思是,如果我設法在 Unison 標頭之後列印我的任務列表,由於標頭中的附加資訊,它們在同步期間是否有可能出現數據損壞?
PS:Unison 使用 ssh 進行兩個系統之間的通信。
如果不是,您可以測試腳本(即rc文件)的輸出是否是終端;如果是,則輸出文本應該是安全的,如果不是終端,則不輸出任何內容:
if [ -t 0 ]; then # check your jobs here and print any info you want to see fi
您可以通過搜尋
i
in來檢查目前是否是互動式的$-
:if expr "$-" : '.*i' >/dev/null; then echo interactive fi