2011-06-21 26 views
5

zshスクリプトを実行して、.zshrcファイルをロードするようにしました。 対話モードでスクリプトを実行する必要があると思いますか?zshスクリプトが中断されるのを止める方法(tty出力)

このように、私のスクリプトは次のように始まる:私は、バックグラウンドでこのスクリプトを実行しようとすると、

#!/bin/zsh -i 

if [ $# = 0 ] 
then 
    echo "need command line paramter..." 
    exit 
fi 

はしかし、私のスクリプトは、(私はパラメータの正しい数を渡す場合も)一時停止状態になる:

[1] + suspended (tty output) 

私の質問は、バックグラウンドで実行できるスクリプトを作成して、スタートアップの.zshrcファイルをロードするにはどうすればいいですか?インタラクティブモードにしなければならない場合、どうすればtty出力の問題を回避できますか?

おかげ

+2

スクリプトの開始に使用した完全なコマンドを含めてください。 – Flimzy

答えて

6

は、ハッシュ・バンとして対話型モードを使用しないでください!

今後の参考のために
#!/bin/zsh 
source ~/.zshrc 
... 

、あなたはそれをすることはできませんので、シェルから以前にバックグラウンドに仕事を切り離すことdisown bultinを使用することができます。

代わりに、スクリプト内のソースあなたのzshrcファイルには、あなたはそれが必要な場合中断されているか何か他の。親シェルは、無プロセスに影響を与えるで閉じることができます。

$ disown %1 

あなたが&!演算子を使用してだけではなく&でプログラムを起動するときに、コマンドラインから直接これを行うことができます。

$ ./my_command &! 
関連する問題