1*13de33a5SJulio Merino# $FreeBSD$ 2*13de33a5SJulio MerinoIFS=, 3*13de33a5SJulio Merino 4*13de33a5SJulio MerinoSPECIAL="break,\ 5*13de33a5SJulio Merino :,\ 6*13de33a5SJulio Merino continue,\ 7*13de33a5SJulio Merino . /dev/null, 8*13de33a5SJulio Merino eval, 9*13de33a5SJulio Merino exec, 10*13de33a5SJulio Merino export -p, 11*13de33a5SJulio Merino readonly -p, 12*13de33a5SJulio Merino set, 13*13de33a5SJulio Merino shift 0, 14*13de33a5SJulio Merino times, 15*13de33a5SJulio Merino trap, 16*13de33a5SJulio Merino unset foo" 17*13de33a5SJulio Merino 18*13de33a5SJulio MerinoUTILS="alias,\ 19*13de33a5SJulio Merino bg,\ 20*13de33a5SJulio Merino bind,\ 21*13de33a5SJulio Merino cd,\ 22*13de33a5SJulio Merino command echo,\ 23*13de33a5SJulio Merino echo,\ 24*13de33a5SJulio Merino false,\ 25*13de33a5SJulio Merino fc -l,\ 26*13de33a5SJulio Merino fg,\ 27*13de33a5SJulio Merino getopts a var,\ 28*13de33a5SJulio Merino hash,\ 29*13de33a5SJulio Merino jobs,\ 30*13de33a5SJulio Merino printf a,\ 31*13de33a5SJulio Merino pwd,\ 32*13de33a5SJulio Merino read var < /dev/null,\ 33*13de33a5SJulio Merino test,\ 34*13de33a5SJulio Merino true,\ 35*13de33a5SJulio Merino type ls,\ 36*13de33a5SJulio Merino ulimit,\ 37*13de33a5SJulio Merino umask,\ 38*13de33a5SJulio Merino unalias -a,\ 39*13de33a5SJulio Merino wait" 40*13de33a5SJulio Merino 41*13de33a5SJulio Merinoset -e 42*13de33a5SJulio Merino 43*13de33a5SJulio Merino# For special built-ins variable assignments affect the shell environment. 44*13de33a5SJulio Merinoset -- ${SPECIAL} 45*13de33a5SJulio Merinofor cmd in "$@" 46*13de33a5SJulio Merinodo 47*13de33a5SJulio Merino ${SH} -c "VAR=1; VAR=0 ${cmd}; exit \${VAR}" >/dev/null 2>&1 48*13de33a5SJulio Merinodone 49*13de33a5SJulio Merino 50*13de33a5SJulio Merino# For other built-ins and utilites they do not. 51*13de33a5SJulio Merinoset -- ${UTILS} 52*13de33a5SJulio Merinofor cmd in "$@" 53*13de33a5SJulio Merinodo 54*13de33a5SJulio Merino ${SH} -c "VAR=0; VAR=1 ${cmd}; exit \${VAR}" >/dev/null 2>&1 55*13de33a5SJulio Merinodone 56