与 shell 内置函数同名的可执行文件是否可以比 shell 内置函数做更少的“工作”?例如,fg
可执行文件是否可以立即异常退出?如果不给定参数,可执行wait
文件是否可以jobs
退出,否则可以退出?0
1
例如,在 OS X 上,以下脚本是/usr/bin/cd
:/usr/bin/wait
#!/bin/sh
# $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $
# This file is in the public domain.
builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"}
这实际上会尝试调用sh
与脚本所在文件同名的内置函数,对于许多其他实用程序也是如此:
% grep -rl 'alias/generic[.]sh' /usr/bin
/usr/bin/umask
/usr/bin/unalias
/usr/bin/alias
/usr/bin/wait
/usr/bin/hash
/usr/bin/fc
/usr/bin/read
/usr/bin/type
/usr/bin/getopts
/usr/bin/bg
/usr/bin/fg
/usr/bin/cd
/usr/bin/command
/usr/bin/jobs
/usr/bin/ulimit
基于这个关于外部的有用性的问题cd
这个关于外部命令和它的答案之一和这个问题printf
关于yash
,我想我首先理解这些命令存在的基本原理,我只是想知道其中的一些命令是否可以比现在做更少的工作。