3629c57a90899b2ee10cbe8ae03b2fab9a06dade
[platform/upstream/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
16 # set up a fixed path so we know notthere will not be found
17 PATH=/usr/bin:/bin:/usr/local/bin:
18 export PATH
19
20 notthere
21 echo $?
22
23 # this is iffy, since the error messages may vary from system to system
24 # and /tmp might not exist
25 ln -s ${THIS_SH} /tmp/bash 2>/dev/null
26 if [ -f /tmp/bash ]; then
27         /tmp/bash notthere
28 else
29         ${THIS_SH} notthere
30 fi
31 echo $?
32 rm -f /tmp/bash
33
34 # /bin/sh should be there on all systems
35 ${THIS_SH} /bin/sh
36 echo $?
37
38 # try executing a directory
39 /
40 echo $?
41
42 ${THIS_SH} /
43 echo $?
44
45 # try sourcing a directory
46 . /
47 echo $?
48
49 # try sourcing a binary file -- post-2.04 versions don't do the binary file
50 # check, and will probably fail with `command not found', or status 127
51 # bash-4.1 and later check for 256 NUL characters and fail as binary files
52 # if there are more than that, it's probably binary
53 . ${THIS_SH} 2>/dev/null
54 echo $?
55
56 # post-bash-2.05 versions allow sourcing non-regular files
57 . /dev/null
58 echo $?
59
60 # kill two birds with one test -- test out the BASH_ENV code
61 echo echo this is bashenv > /tmp/bashenv
62 export BASH_ENV=/tmp/bashenv
63 ${THIS_SH} ./exec3.sub
64 rm -f /tmp/bashenv
65 unset BASH_ENV
66
67 # we're resetting the $PATH to empty, so this should be last
68 PATH=
69
70 notthere
71 echo $?
72
73 command notthere
74 echo $?
75
76 command -p notthere
77 echo $?
78
79 # but -p should guarantee that we find all the standard utilities, even
80 # with an empty or unset $PATH
81 command -p sh -c 'echo this is $0'
82 unset PATH
83 command -p sh -c 'echo this is $0'
84
85 # a bug in bash before bash-2.01 caused PATH to be set to the empty string
86 # when command -p was run with PATH unset
87 echo ${PATH-unset}
88
89 echo "echo ok" | ${THIS_SH} -t
90
91 ${THIS_SH} ./exec2.sub
92 echo $?
93
94 ${THIS_SH} ./exec4.sub
95
96 # try exec'ing a command that cannot be found in $PATH
97 ${THIS_SH} ./exec5.sub
98
99 # this was a bug in bash versions before bash-2.04
100 ${THIS_SH} -c 'cat </dev/null | cat >/dev/null' >&-
101
102 # checks for proper return values in subshell commands with inverted return
103 # values
104
105 ${THIS_SH} ./exec6.sub
106
107 # checks for properly deciding what constitutes an executable file
108 ${THIS_SH} ./exec7.sub
109
110 ${THIS_SH} -i ./exec8.sub
111
112 true | `echo true` &
113
114 echo after