1
2時間のフレーミングの後、私は諦めます。bashプレフィックスは現在のディレクトリに出力されます
function Build() {
cd /plugins
make
cd /acc
make
}
を...と私は、スクリプトからの出力は、各ラインに接頭辞を希望される:
私はbashの機能で長時間実行されるビルドスクリプトを持っている、のは、「構築」と呼んでみましょう現在のディレクトリ:/plugins: configure: checking for gcc
/plugins/inner: making inner modules
...
/acc: configure: checking for speed of strstr.
/acc/misc making misc pieces
....などです。スクリプトには数十個の "cd"があるので、私はそれぞれを変更する必要はありません。 awkへの配管とDEBUGのトラップの様々な組み合わせを試しましたが、喜びはありません。
アイデア?
cd(){ builtin cd "[email protected]"; pwd }
それとも、本当に、その後、すべてのコマンド楽器にする場合:
trap "eval 'echo -n $PWD:'" DEBUG
、あるいは本当にすべてのchdir
システムコールをトレースする
試してみました。 cd()関数は、明示的にスクリプト内にあるcdをトラップし、makeファイル内のものはトラップしません。 – user3734586
それらを試してみてください。 cd()関数は、明示的にスクリプト内にあるcdをトラップし、makeファイル内のものはトラップしません。 DEBUGトラップは、pwdを実行した現在の結果ではなく、PWDの値をエコーします。それだけでは、メインのスクリプトにコマンドをトラップするように見えますが、スパン・オフのメイクファイルはありません。何か案は? – user3734586
bashスクリプトからmakeプロセス内のchdirをトレースすることはできません。しかし、環境変数 'MAKEFLAGS = -w'を設定してmakeがchdirs自身をトレースするようにすることができます。 しかし、実際にすべてのプロセスから 'chdir'システムコールをトレースしたいのであれば、' strace'やLD_PRELOADedと同様のハックがあると思います。 – jil