Watanabeシェルには3種類のビルトインがあり、マニュアルで詳しく説明されています。すべての組み込みコマンドもそこにリストされていますが、コマンドが「特殊」または「半特殊」であるという注記がないため、何かが「通常の」組み込みコマンドであると推測する必要がありますビルトイン。通常の組み込みはマークされていません。
printf
そのような「通常の」ビルトインです。ネイティブモードでは、その名前で外部コマンドが見つかったかどうかに関係なく、常に呼び出されます。
$ PATH = / usr / bin
$ printf
printf:このコマンドにはオペランドが必要です
$ タイプprintf
printf:/ usr / bin / printfの標準ビルトイン
$
$ PATH = /
$ printf
printf:このコマンドにはオペランドが必要です
$ タイプprintf
printf:通常の組み込み($ PATHにはない)
$
ただし、posixly-correct
シェルオプションが設定されている場合、外部コマンドがで見つかる場合、それはビルトインPATH
です。
$ set --posixly-correct
$
$ PATH = / usr / bin
$ printf
printf:このコマンドにはオペランドが必要です
$
$ PATH = /
$ printf
yash:そのようなコマンド「printf」はありません
$
これは実際、Single Unix Specifiationが述べていることと一致しており、少なくとも1997年以来述べています。
これは、Zシェル、93 Kornシェル、Bourne Againシェル、Debian Almquistシェルとは異なります。これらはいずれも、通常の組み込みの動作を実装または文書化するものではありません。たとえば、Zシェルは、を検索するステップの前に、通常の組み込みが常に検出されるドキュメントを作成します。Debian Almquistシェルも同様です。そして、それはこれらのシェルがすべてすることです。たとえPOSIXを有効にするオプションで呼び出されたとしてもです。PATH
sh
%/ bin / exec -a sh zsh -c "PATH = /;タイプprintf; printf"
printfはシェル組み込みです
zsh:printf:1:引数が不足しています
%/ bin / exec -a sh ksh93 -c "PATH = /;タイプprintf; printf"
printfはシェル組み込みです
使用法:printf [options] format [string ...]
%/ bin / exec -a sh bash --posix -c "PATH = / type printf; printf"
printfはシェル組み込みです
printf:使用法:printf [-v var]形式[引数]
%/ bin / exec -a sh dash -c "PATH = /;タイプprintf; printf"
printfはシェル組み込みです
sh:1:printf:使用法:printf形式[引数...]
%
ただし、PD Kornシェル、Heirloom Bourneシェル、およびMirBSD Kornシェルの動作は、起動printf
していないときに実行されませんPATH
。printf
そもそも組み込み機能がないためです。☺
%/ bin / exec -a sh `command -v ksh` -c" PATH = /; type printf; printf "
printfが見つかりません
sh:printf:見つかりません
%/ bin / exec -a sh `command -v oksh` -c" PATH = /; type printf; printf "
printfが見つかりません
sh:printf:見つかりません
%/ bin / exec -a sh `command -v jsh` -c" PATH = /;タイプprintf; printf "
printfが見つかりません
sh:printf:見つかりません
%/ bin / exec -a sh mksh -c "PATH = /;タイプprintf; printf"
printfが見つかりません
sh:printf:見つかりません
%ksh -c "type printf; printf"
printfは、/ usr / bin / printfの追跡されたエイリアスです
使用法:printf形式[引数...]
%oksh -c "type printf; printf"
printfは、/ usr / bin / printfの追跡されたエイリアスです
使用法:printf形式[引数...]
%jsh -c "type printf; printf"
printfはハッシュされます(/ usr / bin / printf)
使用法:printf形式[引数...]
%mksh -c "type printf; printf"
printfは、/ usr / bin / printfの追跡されたエイリアスです
使用法:printf形式[引数...]
$
PATH