フォアグラウンドでプロセスを実行することは、決して役に立たないと思います。したがって、すべてのプロセスをバックグラウンドで実行したいと思います。それは可能ですか?また、そうすることに関連する問題があるかどうか教えてください。
この質問からコードを適応させることができます:https://superuser.com/questions/175799/does-bash-have-a-hook-that-is-run-before-executing-a-command
基本的に、これはDEBUG
トラップを使用して、コマンドラインで入力したものの前にコマンドを実行します。したがって、この:
preexec () { :; }
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
local this_command=$(HISTTIMEFORMAT= history 1);
preexec "$this_command" &
}
trap 'preexec_invoke_exec' DEBUG
コマンドを実行しますが、&
その後、プロセスをバックグラウンドで実行します。
これは端末に他のかなり奇妙な影響を与えることに注意してください。フォアグラウンドで実行されるはずのもの(コマンドラインブラウザ、メールリーダー、インタラクティブコマンド、入力が必要なものなど)には問題があります。
bash
、と入力するだけでこれを試すことができます。これにより、別のシェルが実行されます。上記のコードを貼り付けてください。問題が発生し始めたらexit
、シェルから出てリセットします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加