
計測が必要なスクリプトがあります。プログラムを呼び出すとしましょうfoo
。
関数を定義foo
し、それをサブシェルにエクスポートできるので、インスツルメントされた呼び出しを提供できますfoo
。これは、スクリプトが「互換性のある」シェルで実行されている場合にのみ機能します。
より移植性の高いソリューションはありますか?
答え1
シェル包装を使用しますか?
mv foo foo.real
cat >foo <<EOF
#!/bin/sh
... whatever instrumentation ...
exec foo.real "$@"
EOF
chmod +x foo
foo
呼び出す必要がある場合は失敗し、foo
その場合はPATH
トリックが必要な場合やfoo
特定のlibexec
ディレクトリに移動するなどの作業が必要になる場合があります。exec
実行後の検出も必要な場合は、このビットをスキップしてください。