blob: 5a4e9034077e14fc223e958f2d8be9a40dd587f9 [file] [log] [blame]
Jari Aaltod166f041997-06-05 14:59:13 +00001export LC_ALL=C
2export LANG=C
3
Jari Aaltob80f6442004-07-27 13:29:18 +00004if [ $UID -eq 0 ]; then
Jari Aaltof73dda02001-11-13 17:56:06 +00005 echo "execscript: the test suite should not be run as root" >&2
6fi
7
Jari Aaltod166f041997-06-05 14:59:13 +00008set -- one two three
Jari Aaltocce855b1998-04-17 19:52:44 +00009echo before exec1.sub: "$@"
10echo calling exec1.sub
11./exec1.sub aa bb cc dd ee
12echo after exec1.sub with args: $?
13./exec1.sub
14echo after exec1.sub without args: $?
Chet Rameyac50fba2014-02-26 09:36:43 -050015echo after exec1.sub: "$@"
Jari Aaltod166f041997-06-05 14:59:13 +000016
17# set up a fixed path so we know notthere will not be found
18PATH=/usr/bin:/bin:/usr/local/bin:
19export PATH
20
21notthere
22echo $?
23
24# this is iffy, since the error messages may vary from system to system
Jari Aaltob80f6442004-07-27 13:29:18 +000025# and /tmp might not exist
26ln -s ${THIS_SH} /tmp/bash 2>/dev/null
27if [ -f /tmp/bash ]; then
28 /tmp/bash notthere
29else
30 ${THIS_SH} notthere
31fi
Jari Aaltod166f041997-06-05 14:59:13 +000032echo $?
Jari Aaltob80f6442004-07-27 13:29:18 +000033rm -f /tmp/bash
Jari Aaltod166f041997-06-05 14:59:13 +000034
35# /bin/sh should be there on all systems
36${THIS_SH} /bin/sh
37echo $?
38
39# try executing a directory
40/
41echo $?
42
43${THIS_SH} /
44echo $?
45
46# try sourcing a directory
47. /
48echo $?
49
Jari Aalto28ef6c32001-04-06 19:14:31 +000050# try sourcing a binary file -- post-2.04 versions don't do the binary file
51# check, and will probably fail with `command not found', or status 127
Chet Ramey00018032011-11-21 20:51:19 -050052# bash-4.1 and later check for 256 NUL characters and fail as binary files
53# if there are more than that, it's probably binary
Jari Aaltod166f041997-06-05 14:59:13 +000054. ${THIS_SH} 2>/dev/null
55echo $?
56
Jari Aaltof73dda02001-11-13 17:56:06 +000057# post-bash-2.05 versions allow sourcing non-regular files
Jari Aaltod166f041997-06-05 14:59:13 +000058. /dev/null
59echo $?
60
61# kill two birds with one test -- test out the BASH_ENV code
62echo echo this is bashenv > /tmp/bashenv
63export BASH_ENV=/tmp/bashenv
Jari Aaltocce855b1998-04-17 19:52:44 +000064${THIS_SH} ./exec3.sub
Jari Aaltod166f041997-06-05 14:59:13 +000065rm -f /tmp/bashenv
66unset BASH_ENV
67
68# we're resetting the $PATH to empty, so this should be last
69PATH=
70
71notthere
72echo $?
73
74command notthere
75echo $?
76
77command -p notthere
78echo $?
79
80# but -p should guarantee that we find all the standard utilities, even
81# with an empty or unset $PATH
82command -p sh -c 'echo this is $0'
83unset PATH
84command -p sh -c 'echo this is $0'
85
86# a bug in bash before bash-2.01 caused PATH to be set to the empty string
87# when command -p was run with PATH unset
88echo ${PATH-unset}
89
90echo "echo ok" | ${THIS_SH} -t
91
Jari Aaltocce855b1998-04-17 19:52:44 +000092${THIS_SH} ./exec2.sub
Jari Aaltod166f041997-06-05 14:59:13 +000093echo $?
94
Jari Aaltocce855b1998-04-17 19:52:44 +000095${THIS_SH} ./exec4.sub
96
97# try exec'ing a command that cannot be found in $PATH
98${THIS_SH} ./exec5.sub
Jari Aaltobb706242000-03-17 21:46:59 +000099
100# this was a bug in bash versions before bash-2.04
101${THIS_SH} -c 'cat </dev/null | cat >/dev/null' >&-
Jari Aalto28ef6c32001-04-06 19:14:31 +0000102
103# checks for proper return values in subshell commands with inverted return
104# values
105
106${THIS_SH} ./exec6.sub
Jari Aaltob80f6442004-07-27 13:29:18 +0000107
108# checks for properly deciding what constitutes an executable file
109${THIS_SH} ./exec7.sub
Jari Aalto95732b42005-12-07 14:08:12 +0000110
Jari Aalto31859422009-01-12 13:36:28 +0000111${THIS_SH} -i ./exec8.sub
112
Chet Ramey495aee42011-11-22 19:11:26 -0500113${THIS_SH} ./exec9.sub
114
Jari Aalto95732b42005-12-07 14:08:12 +0000115true | `echo true` &
116
117echo after
Chet Ramey495aee42011-11-22 19:11:26 -0500118
119# Problem with bash at least back to version 3.0
120${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}'
121
122# problem with bash through bash-4.1
123(
124 exec /var/empty/nosuch
125 echo bad
126) 2>/dev/null
127[ $? = 127 ] || echo FAIL: bad exit status $? at $LINENO