Vỏ Watanabe có ba loại tích hợp, được mô tả chi tiết trong hướng dẫn sử dụng. Tất cả các lệnh dựng sẵn cũng được liệt kê ở đó, nhưng người ta phải suy luận rằng một cái gì đó là một lệnh tích hợp "thông thường" do không có bất kỳ ghi chú nào nói rằng lệnh đó là "đặc biệt" hoặc "bán đặc biệt" được xây dựng trong. Xây dựng thường xuyên không được đánh dấu.
printf
là một trong những "tích hợp" thường xuyên như vậy. Trong chế độ riêng, nó luôn được gọi, bất kể có lệnh bên ngoài nào được tìm thấy bởi tên đó hay không.
$ PATH = / usr / bin
$ printf
printf: lệnh này yêu cầu một toán hạng
$ printf
printf: tích hợp thường xuyên tại / usr / bin / printf
$
$ PATH = /
$ printf
printf: lệnh này yêu cầu một toán hạng
$ printf
printf: tích hợp thông thường (không tìm thấy trong $ PATH)
$
Nhưng khi posixly-correct
tùy chọn shell được đặt, nó chỉ được tích hợp sẵn nếu lệnh bên ngoài có thể được tìm thấy trên PATH
.
$ set --poseixly-true
$
$ PATH = / usr / bin
$ printf
printf: lệnh này yêu cầu một toán hạng
$
$ PATH = /
$ printf
yash: không có lệnh như vậy `printf '
$
Điều này thực sự phù hợp với những gì Thông số kỹ thuật Unix đơn nói và đã nói từ ít nhất là năm 1997.
Nó khác với vỏ Z, vỏ 93 Korn, vỏ Bourne Again và vỏ Debian Almquist, không ai trong số đó thực hiện hoặc ghi lại hành vi đó cho các phần mềm dựng sẵn thông thường. Ví dụ, trình bao Z, các tài liệu tích hợp thông thường luôn được tìm thấy, trước bước tìm kiếm PATH
. Vỏ Shell Almquist cũng vậy. Và đó là những gì các shell này làm được, ngay cả khi được gọi như sh
với các tùy chọn POSIX bật của chúng.
% / bin / exec -a sh zsh -c "PATH = /; gõ printf; printf"
printf là một vỏ dựng sẵn
zsh: printf: 1: không đủ đối số
% / bin / exec -a sh ksh93 -c "PATH = /; gõ printf; printf"
printf là một vỏ dựng sẵn
Cách sử dụng: printf [tùy chọn] định dạng [chuỗi ...]
% / bin / exec -a sh bash --poseix -c "PATH = / type printf; printf"
printf là một vỏ dựng sẵn
printf: cách sử dụng: printf [-v var] format [argument]
% / bin / exec -a sh dash -c "PATH = /; gõ printf; printf"
printf là một vỏ dựng sẵn
sh: 1: printf: cách sử dụng: định dạng printf [arg ...]
%
Tuy nhiên, không chạy printf
khi nó không hoạt động PATH
là vỏ PD Korn, vỏ Bourne gia truyền và vỏ KBS MirBSD; bởi vì họ không có tích printf
hợp ngay từ đầu. ☺
% / bin / exec -a sh `lệnh -v ksh` -c" PATH = /; gõ printf; printf "
không tìm thấy printf
sh: printf: không tìm thấy
% / bin / exec -a sh `lệnh -v oksh` -c" PATH = /; gõ printf; printf "
không tìm thấy printf
sh: printf: không tìm thấy
% / bin / exec -a sh `lệnh -v jsh` -c" PATH = /; gõ printf; printf "
không tìm thấy printf
sh: printf: không tìm thấy
% / bin / exec -a sh mksh -c "PATH = /; gõ printf; printf"
không tìm thấy printf
sh: printf: không tìm thấy
% ksh -c "gõ printf; printf"
printf là bí danh được theo dõi cho / usr / bin / printf
cách sử dụng: định dạng printf [đối số ...]
% oksh -c "gõ printf; printf"
printf là bí danh được theo dõi cho / usr / bin / printf
cách sử dụng: định dạng printf [đối số ...]
% jsh -c "gõ printf; printf"
printf được băm (/ usr / bin / printf)
cách sử dụng: định dạng printf [đối số ...]
% mksh -c "gõ printf; printf"
printf là bí danh được theo dõi cho / usr / bin / printf
cách sử dụng: định dạng printf [đối số ...]
$
PATH
để một thường xuyên built-in để được thực hiện - sau đó xin vui lòng đặt câu hỏi của bạn về điều đó.