他のプログラムと同じ名前の関数を作成する必要があることがよくありますが、これがbashスクリプトを使用する良い方法であるかどうかはわかりません。
例:
function echo () {
echo -n "$@" ;
}
テスト後は、binパスの前のスクリプト内で関数名を解決するようです。私はこれと私が知る必要がある他の情報を確認したいと思います。
答え1
echo() {
command echo -n "$@"
}
ここで使用することは、関数ではなくコマンド(組み込み)をcommand
要求することを意味します。それ以外の場合は、コマンドが優先されます。echo
これは組み込みコマンドなので(ただし、組み込みコマンドはファイルシステムコマンドよりも優先されるためecho
検索されません)、次のようにすることもできます。$PATH
echo() {
builtin echo -n "$@"
}
後者のzsh
アプローチがcommand echo
実行されることが望ましい/bin/echo
(シミュレーションを除くsh
)。
シェル間にはわずかな微妙な違いがありますが、一般的に優先順位は次のとおりです。
- 特殊組み込み機能
- 機能
- 組み込み機能
- コマンド
$PATH
(そして順序は、組み込みコマンドによって管理されるテーブル内と内部の順序によって異なります$PATH
)hash
hash
シェル構文のエイリアスとキーワード(for
、if
...)は、引用符が付けられていない場合は前に続くものとして扱われます。
一部のシェルでは、1
のように、 との順序が逆です。関数として呼び出すときは、特殊な組み込み関数と同じ名前の関数を定義することはできません。2
bash
zsh
bash
sh