
wc
コマンドを使用する簡単な bash スクリプトを実行しようとしていますcat
。スクリプトは次のように失敗します:
wc: command not found
またはこれ(wc を使用する文字列をコメントした後):
cat: command not found
何が起こっているのか全く分かりません。全く同じコード断片を含む類似のスクリプトは完璧に動作します。両方のスクリプトは同じ条件で使用されます。その上、
machine:~ user$ which wc
/usr/bin/wc
そして
machine:~ user$ which cat
/bin/cat
答え1
@Tyson が指摘したように、PATH
変数には答えが保持されます。
スクリプトでフルパスを使用することは、通常は良い習慣だと考えられていることを指摘したいだけです。たとえば、 を呼び出す代わりに、wc
を呼び出すことができます/usr/bin/wc
。上記の問題を解決するだけでなく、誰かが同じ名前を使用して PATH に置いたアプリケーションの実行を防ぐことができるため、より安全です...これらの攻撃の名前は思い出せませんが、その意味はわかります。=)