init version.
[bush.git] / tests / 6.cmd / alias / alias4.sub
blob0864a3c463e015dccbb0a621e3777ebc2f5347b5
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 shopt -s expand_aliases
16 # from an austin-group report
17 alias foo="echo 'Error:"
18 foo bar'
20 # from some FreeBSD sh tests
22 v=1
23 alias a='unalias -a
24 v=2'
25 eval a
26 [ "$v" = 2 ] && echo ok 1
27 v=1
28 alias a='unalias a
29 v=2'
30 eval a
31 [ "$v" = 2 ] && echo ok 2
33 # make sure command doesn't ever reset anything even if it's made a keyword
34 unalias -a
35 alias command=command
36 alias true='echo bad'
37 eval 'command true'
39 unalias -a
40 alias alias0=command
41 alias true='echo bad'
42 eval 'alias0 true'
44 # make sure null aliases are ok
45 unalias -a
46 alias nullalias=''
47 alias foo='echo '
48 foo nullalias text
49 unalias foo
51 # aliases shouldn't be expanded in quoted strings even when the previous word
52 # is an alias whose expansion ends in a space
53 alias foo="echo 'whoops: "
54 foo nullalias'
56 unalias -a
58 # recursive alias definitions
59 alias echo=echo
60 eval echo foo
62 alias echo='echo a'
64 echo
65 echo b
66 eval echo b
67 echo $(eval echo b)
69 unalias -a
71 # alias expansion when in a command position after redirections
72 alias e=echo
73 eval '</dev/null e ok 3'
74 eval 'a=true e ok 4'
76 alias comment=#
77 comment
79 alias long_comment='# for x in '
80 long_comment text after
82 # comment
83 comment foo bar
85 # alias ending in a tab
86 alias foo="\
87         echo \"bar\" \
88         "
90 foo
92 alias foo=$'echo bad \t'
93 foo
95 # this should probably just echo a blank line to stdout
96 alias foo='echo 0'
97 foo>&2
99 alias a='printf "<%s>\n" \'
100 a|cat