]> git.ipfire.org Git - thirdparty/bash.git/blob - tests/execscript
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / tests / execscript
1 export LC_ALL=C
2 export LANG=C
3
4 if [ $UID -eq 0 ]; then
5 echo "execscript: the test suite should not be run as root" >&2
6 fi
7
8 set -- one two three
9 echo before exec1.sub: "$@"
10 echo calling exec1.sub
11 ./exec1.sub aa bb cc dd ee
12 echo after exec1.sub with args: $?
13 ./exec1.sub
14 echo after exec1.sub without args: $?
15 echo after exec1.sub: "$@"
16
17 # set up a fixed path so we know notthere will not be found
18 PATH=/usr/bin:/bin:/usr/local/bin:
19 export PATH
20
21 notthere
22 echo $?
23
24 # this is iffy, since the error messages may vary from system to system
25 # and /tmp might not exist
26 ln -s ${THIS_SH} /tmp/bash 2>/dev/null
27 if [ -f /tmp/bash ]; then
28 /tmp/bash notthere
29 else
30 ${THIS_SH} notthere
31 fi
32 echo $?
33 rm -f /tmp/bash
34
35 # /bin/sh should be there on all systems
36 ${THIS_SH} /bin/sh
37 echo $?
38
39 # try executing a directory
40 /
41 echo $?
42
43 ${THIS_SH} /
44 echo $?
45
46 # try sourcing a directory
47 . /
48 echo $?
49
50 # 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
52 # 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
54 . ${THIS_SH} 2>/dev/null
55 echo $?
56
57 # post-bash-2.05 versions allow sourcing non-regular files
58 . /dev/null
59 echo $?
60
61 # kill two birds with one test -- test out the BASH_ENV code
62 echo echo this is bashenv > $TMPDIR/bashenv
63 export BASH_ENV=$TMPDIR/bashenv
64 ${THIS_SH} ./exec3.sub
65 rm -f $TMPDIR/bashenv
66 unset BASH_ENV
67
68 # we're resetting the $PATH to empty, so this should be last
69 PATH=
70
71 notthere
72 echo $?
73
74 command notthere
75 echo $?
76
77 command -p notthere
78 echo $?
79
80 # but -p should guarantee that we find all the standard utilities, even
81 # with an empty or unset $PATH
82 command -p sh -c 'echo this is $0'
83 unset PATH
84 command -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
88 echo ${PATH-unset}
89
90 echo "echo ok" | ${THIS_SH} -t
91
92 ${THIS_SH} ./exec2.sub
93 echo $?
94
95 ${THIS_SH} ./exec4.sub
96
97 # try exec'ing a command that cannot be found in $PATH
98 ${THIS_SH} ./exec5.sub
99
100 # this was a bug in bash versions before bash-2.04
101 ${THIS_SH} -c 'cat </dev/null | cat >/dev/null' >&-
102
103 # checks for proper return values in subshell commands with inverted return
104 # values
105
106 ${THIS_SH} ./exec6.sub
107
108 # checks for properly deciding what constitutes an executable file
109 ${THIS_SH} ./exec7.sub
110
111 ${THIS_SH} -i ${PWD}/exec8.sub
112
113 ${THIS_SH} ./exec9.sub
114
115 ${THIS_SH} ./exec10.sub
116 ${THIS_SH} ./exec11.sub
117
118 true | `echo true` &
119
120 echo after
121
122 # Problem with bash at least back to version 3.0
123 ${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}'
124
125 # problem with bash through bash-4.1
126 (
127 exec /var/empty/nosuch
128 echo bad
129 ) 2>/dev/null
130 [ $? = 127 ] || echo FAIL: bad exit status $? at $LINENO
131
132 unset FALSE
133 if [ -x /bin/false ]; then
134 FALSE=/bin/false
135 elif [ -x /usr/bin/false ]; then
136 FALSE=/usr/bin/false
137 else
138 FALSE='command false'
139 fi
140
141 # problem with undoing redirections before running exit trap through bash-4.3
142
143 ${THIS_SH} ./exec12.sub false # function
144 ${THIS_SH} ./exec12.sub command false
145 ${THIS_SH} ./exec12.sub $FALSE
146
147 ${THIS_SH} ./exec12.sub notfound
148 ${THIS_SH} ./exec12.sub syntaxerror
149 ${THIS_SH} ./exec12.sub nosuchcommand
150
151 # problem with fork optimization in bash-4.4-alpha
152
153 $THIS_SH -c 'echo a && /bin/echo b && echo c'
154 $THIS_SH -c 'echo A && /bin/echo B'
155
156 $THIS_SH -c '/bin/echo c && echo d'
157 $THIS_SH -c '/bin/echo c && /bin/echo d && echo e'
158
159 ${THIS_SH} ./exec13.sub
160 ${THIS_SH} ./exec14.sub