私が持っているとしましょうPATH="home/bob/bin:/usr/bin"
。私は/home/bob/bin/foo
いくつかの修正を/usr/bin/foo
行った後。実際、実際のfooは複数の場所にある可能性があるので、PATHで探したいと思います。私の新しいfooスクリプトも私のパスにあるので、fooを呼び出すことはできず、これは再帰呼び出しを引き起こします。
Bashスクリプトでこれを行う簡単な方法はありますか? (PATH要素を繰り返して手動で検索する以外に?)
ベストアンサー1
以下を使用すると、いつでも2番目のパスを取得できますfoo
。
foo=$(type -Pa foo | tail -n+2 | head -n1)
(ファイルパスに改行文字が含まれていない場合)
これは相対パスであり、実行後は無効になりますcd
。
これにより、次のことができます。
hash -p "$foo" foo
だからそれ foo
実行時に呼び出されますfoo
。