2016-04-14 14 views
-1

"exit"のように動作するが、実行中のbashターミナルを閉じるスクリプトで "quit"コマンドを作成しています。どこからでもbash端末を終了できますが、スクリプトを終了することはできません。

exit 

が、それは良いしません - それだけで、スクリプトの終了ではなく、bashのターミナルセッションとしてそれを取る:私は辞め行う方法を知って 唯一の方法です。

+0

「ctrl-d」の入力は難しいですか? –

+0

何ですか?私は混乱しています、あなたはあなたがどんなディレクトリにいてもシェルを終了できます。バックグラウンドでプロセスを持っていても、セッションを終了するコマンドを作成しようとしていますか?もしそうなら、人はノハップです。また、これはvimと何が関係していますか? – SaintHax

+0

私はbash(vimのMODEで)でスクリプトを作っていますので、exitの代わりにquitを打つのを間違えると、ほとんど同じことが起こります。 –

答えて

0

topコマンドを使用してプロセスIDを検索し、次にkill #IDを使用して、bashプロセスを強制終了できます。これにより、bashセッションを終了し、スクリプトを実行し続けることができます。

+0

さて、私はこれを試してみます。 –

0

あなたが入っているシェルからスクリプトを切り離そうとしているように聞こえます。スクリプト自体からシェルから切り離したい場合は、効果的にフォークできます。

#!bin/bash 
forked_function() { 
    # This will now be in it's worn process. Check it using 
    # ps ax | grep forked_function 
    sleep 1000; 
} 
forked_function & 

非常に一般的なアプローチは、screenを使用することです。これにより、端末closeが表示され、中断した場所で実行中のプロセスに戻ることができます。あなたがしたいすべてのスクリプトを実行されている場合、あなたが実行しているクロムを残すすなわち

script & 
exit 

を実行していますが、それはそれは閉じません、それ切り離すことができるようにしようとしているスクリプトに追加アンパサンドを使用してみてください終了端末を閉じたときに表示されます。また、バックグラウンドでタスクを管理することもできます。あなたがバックなどフォアグラウンドにジョブ番号1を持ってfg 1のようなコマンドを使用することができますman jobs

script & 
jobs 

を見て

0

あなたはシェルproccessたように、そのコマンドを実行して試すことができます:

execp("exit",NULL,NULL); 
+0

さて、私はこれを試してみます。 –

関連する問題