15

.bashrc でスクリプトを呼び出して、ターミナルを開いたときに新しいメッセージの数を出力します。ネットワークにアクセスし、数秒かかる場合があるため、呼び出しをブロックしないようにしたいので、ターミナルを使用できません。完了するまで。

しかし、私が置くと:

    mailcheck & 

私のbashrcでは、正常に動作します。しかし、その後空の行を出力し、Enterキーを押すと出力されます

    [1]+  Done                    ~/bin/mailcheck

これは非常に厄介です。これを回避する方法はありますか?

4

5 に答える 5

12

このメッセージはメールチェックからではなく、バックグラウンド ジョブについて通知する bash のジョブ コントロールからのものです。これを回避する方法は、ジョブ制御で管理したくないことを bash に伝えることです。

mailcheck &
disown $!
于 2012-05-03T21:52:34.197 に答える
8

これはうまくいくようです:

(mailcheck &)
于 2012-05-03T21:48:35.323 に答える
4

次のようにスクリプトを呼び出すことができます。

(exec mailcheck & )
于 2012-05-03T21:40:34.080 に答える
2

stderr を /dev/null にパイプしてみてください

mailcheck & 2>/dev/null

少し考えてみると、別の方法として write を使用することもできます。
バックグラウンド タスクの出力を自分自身にパイプします。これにより、いつでも完了することができ、stdout および stderr からの追加の出力をビンに入れることができます。

mailcheck | write $(whoami) & > /dev/null
于 2012-05-03T21:38:48.170 に答える