`/usr/bin/cd` 或 `/usr/bin/wait` 可以做多少工作并且仍然符合要求?

`/usr/bin/cd` 或 `/usr/bin/wait` 可以做多少工作并且仍然符合要求?

与 shell 内置函数同名的可执行文件是否可以比 shell 内置函数做更少的“工作”?例如,fg可执行文件是否可以立即异常退出?如果不给定参数,可执行wait文件是否可以jobs退出,否则可以退出?01

例如,在 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,我想我首先理解这些命令存在的基本原理,我只是想知道其中的一些命令是否可以比现在做更少的工作。

相关内容