Unisonエラーを防ぐために、SSHセッション用の別々のbashrcファイル

Unisonエラーを防ぐために、SSHセッション用の別々のbashrcファイル

最近、ラップトップと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.thisは実際に問題の原因です。

今、2つの質問があります。

  1. bashrcでUnisonヘッダーの後に「Task List」メッセージを印刷するにはどうすればよいですか?あるいは、「ジョブリスト」がまったく印刷されないように、sshセッションで別々のRCファイルをロードするようにできますか?

  2. 何でも印刷しても安全ですか?つまり、Unisonヘッダーの後にジョブリストを印刷すると、ヘッダーの追加情報によって同期中にデータが破損する可能性がありますか?

PS:Unisonは2つのシステム間の通信にSSHを使用します。

ベストアンサー1

それ以外の場合は、スクリプトの出力(rcファイルなど)が端末であるかどうかをテストできます。その場合、出力テキストは安全でなければならず、そうでない場合は何も出力しません。

if [ -t 0 ]; then
    # check your jobs here and print any info you want to see
fi

おすすめ記事