command
コマンド:bash
commandという名前のシェル関数を無視し、引数を使用してコマンドを実行します。
この-p
オプションは、$PATH
すべての標準ユーティリティがデフォルト値を使用して取得されることを意味します。
ここで言及されているデフォルトは正確に何ですかPATH
?を定義するときにデフォルト値の上に新しいパスを追加しませexport PATH="/home/ozgur/":$PATH
んか?PATH
たとえば、
$ export PATH="/home/ozgur/":$PATH
$ echo $PATH
/home/ozgur/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ script.sh
hey, i am working !
$ command -p script.sh
hey, i am working !
コマンドでその-p
オプションを使用するときに私が定義した新しいパスをcommand
無視したいのですが、PATH
そのようなことは起こりません。ここで正確に何を見逃していますか?ユーザーパスの変更を上書きしない-p
場合は、このオプションを使用するのはなぜですか?PATH
答え1
ここで正確に何を見逃していますか?
コマンドscript.sh
がハッシュされました。実行すると、hash -r
期待command -p script.sh
どおりに失敗します。しかし、直接実行すると再ハッシュされます。
これはbashのバグのように見えます。他のシェルでは発生しません。
答え2
bash呼び出しのデフォルトパスを設定しますSTANDARD_UTILS_PATH
。このサーバーエラーの回答、コンパイル時のデフォルト値は次のとおりです。
/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc
ソースも見ることができます。GNUサバンナ。