Watanabe外壳具有三种内置组件,在其手册中有详细介绍。所有内置命令也都在此处列出,但是必须从不存在的情况下推断出某种东西是“常规”内置命令任何说明该命令是“特殊”或“半特殊”内置的。常规内置程序未标记。
printf
是一种这样的“常规”内置。在纯模式下,无论是否使用该名称找到了外部命令,总是会调用。
$ PATH = / usr / bin
$ printf
printf:此命令需要一个操作数
$ type printf
printf:/ usr / bin / printf的常规内置文件
$
$ PATH = /
$ printf
printf:此命令需要一个操作数
$ type printf
printf:常规内置文件(在$ PATH中找不到)
$
但是,如果posixly-correct
设置了shell选项,则只能在上找到外部命令,这是内置命令PATH
。
$ set --posixly-正确
$
$ PATH = / usr / bin
$ printf
printf:此命令需要一个操作数
$
$ PATH = /
$ printf
yash:没有这样的命令`printf'
$
这实际上与Single Unix规范所说的一致,并且至少从1997年开始就这样说。
它不同于Z外壳,93 Korn外壳,Bourne Again外壳和Debian Almquist外壳,它们都没有为常规内置程序实现或记录这种行为。例如,Z shell会在搜索步骤之前始终找到常规内置文件。Debian Almquist外壳程序也是如此。这就是所有这些shell所做的事情,即使使用其打开POSIX选项进行调用也是如此。PATH
sh
%/ bin / exec -a sh zsh -c“ PATH = /;输入printf; printf”
printf是一个内置的shell
zsh:printf:1:参数不足
%/ bin / exec -a sh ksh93 -c“ PATH = /;输入printf; printf”
printf是一个内置的shell
用法:printf [选项]格式[字符串...]
%/ bin / exec -a sh bash --posix -c“ PATH = /类型printf; printf”
printf是一个内置的shell
printf:用法:printf [-v var]格式[参数]
%/ bin / exec -a sh破折号-c“ PATH = /;输入printf; printf”
printf是一个内置的shell
sh:1:printf:用法:printf格式[arg ...]
%
但是,PD Korn外壳,Heirloom Bourne外壳和MirBSD Korn外壳的行为printf
是无法运行的PATH
。因为它们首先没有printf
内置功能。☺
%/ bin / exec -a sh`命令-v ksh` -c“ PATH = /;输入printf; printf”
找不到printf
sh:printf:未找到
%/ bin / exec -a sh`命令-v oksh` -c“ PATH = /;输入printf; printf”
找不到printf
sh:printf:未找到
%/ bin / exec -a sh`命令-v jsh` -c“ PATH = /;输入printf; printf”
找不到printf
sh:printf:未找到
%/ bin / exec -a sh mksh -c“ PATH = /;键入printf; printf”
找不到printf
sh:printf:未找到
%ksh -c“类型printf; printf”
printf是/ usr / bin / printf的跟踪别名
用法:printf格式[参数...]
%oksh -c“类型为printf; printf”
printf是/ usr / bin / printf的跟踪别名
用法:printf格式[参数...]
%jsh -c“类型printf; printf”
printf被散列(/ usr / bin / printf)
用法:printf格式[参数...]
%mksh -c“类型printf; printf”
printf是/ usr / bin / printf的跟踪别名
用法:printf格式[参数...]
$
PATH
以便常规内置待执行-然后请对此提出您的问题。