8af87209e3
shell environment, eg after "VAR=val eval" VAR remains set. Currently fails but will be implemented soon.
56 lines
710 B
Plaintext
56 lines
710 B
Plaintext
# $FreeBSD$
|
|
IFS=,
|
|
|
|
SPECIAL="break,\
|
|
:,\
|
|
continue,\
|
|
. /dev/null,
|
|
eval,
|
|
exec,
|
|
export -p,
|
|
readonly -p,
|
|
set,
|
|
shift 0,
|
|
times,
|
|
trap,
|
|
unset foo"
|
|
|
|
UTILS="alias,\
|
|
bg,\
|
|
bind,\
|
|
cd,\
|
|
command echo,\
|
|
echo,\
|
|
false,\
|
|
fc -l,\
|
|
fg,\
|
|
getopts a var,\
|
|
hash,\
|
|
jobs,\
|
|
printf a,\
|
|
pwd,\
|
|
read var < /dev/null,\
|
|
test,\
|
|
true,\
|
|
type ls,\
|
|
ulimit,\
|
|
umask,\
|
|
unalias -a,\
|
|
wait"
|
|
|
|
set -e
|
|
|
|
# For special built-ins variable assignments affect the shell environment.
|
|
set -- ${SPECIAL}
|
|
for cmd in "$@"
|
|
do
|
|
sh -c "VAR=1; VAR=0 ${cmd}; exit \${VAR}" >/dev/null 2>&1
|
|
done
|
|
|
|
# For other built-ins and utilites they do not.
|
|
set -- ${UTILS}
|
|
for cmd in "$@"
|
|
do
|
|
sh -c "VAR=0; VAR=1 ${cmd}; exit \${VAR}" >/dev/null 2>&1
|
|
done
|