1 | ## tags: interactive
|
2 | ## compare_shells: bash
|
3 |
|
4 | #### history -a
|
5 | rm -f tmp
|
6 |
|
7 | echo '
|
8 | history -c
|
9 |
|
10 | HISTFILE=tmp
|
11 | echo 1
|
12 | history -a
|
13 | cat tmp
|
14 |
|
15 | echo 2
|
16 |
|
17 | cat tmp
|
18 | ' | $SH -i
|
19 |
|
20 | # match osh's behaviour of echoing ^D for EOF
|
21 | case $SH in bash) echo '^D' ;; esac
|
22 |
|
23 | ## STDOUT:
|
24 | 1
|
25 | HISTFILE=tmp
|
26 | echo 1
|
27 | history -a
|
28 | 2
|
29 | HISTFILE=tmp
|
30 | echo 1
|
31 | history -a
|
32 | ^D
|
33 | ## END
|
34 |
|
35 | #### history -r
|
36 | rm -f tmp
|
37 | echo 'foo' > tmp
|
38 |
|
39 | echo '
|
40 | history -c
|
41 |
|
42 | HISTFILE=tmp
|
43 | history -r
|
44 | history
|
45 | ' | $SH -i
|
46 |
|
47 | # match osh's behaviour of echoing ^D for EOF
|
48 | case $SH in bash) echo '^D' ;; esac
|
49 |
|
50 | ## STDOUT:
|
51 | 1 HISTFILE=tmp
|
52 | 2 history -r
|
53 | 3 foo
|
54 | 4 history
|
55 | ^D
|
56 | ## END
|
57 |
|
58 | #### HISTFILE is defined initially
|
59 | echo '
|
60 | if test -n $HISTFILE; then echo exists; fi
|
61 | ' | $SH -i
|
62 |
|
63 | # match osh's behaviour of echoing ^D for EOF
|
64 | case $SH in bash) echo '^D' ;; esac
|
65 |
|
66 | ## STDOUT:
|
67 | exists
|
68 | ^D
|
69 | ## END
|
70 |
|
71 | #### HISTFILE must point to a file
|
72 |
|
73 | rm -f _tmp/does-not-exist
|
74 |
|
75 | echo '
|
76 | HISTFILE=_tmp/does-not-exist
|
77 | history -r
|
78 | echo status=$?
|
79 | ' | $SH -i
|
80 |
|
81 | # match osh's behaviour of echoing ^D for EOF
|
82 | case $SH in bash) echo '^D' ;; esac
|
83 |
|
84 | ## STDOUT:
|
85 | status=1
|
86 | ^D
|
87 | ## END
|
88 |
|
89 | #### HISTFILE set to array
|
90 |
|
91 | echo '
|
92 | HISTFILE=(a b c)
|
93 | history -a
|
94 | echo status=$?
|
95 | ' | $SH -i
|
96 |
|
97 | case $SH in bash) echo '^D' ;; esac
|
98 |
|
99 | # note that bash actually writes the file 'a', since that's ${HISTFILE[0]}
|
100 |
|
101 | ## STDOUT:
|
102 | status=1
|
103 | ^D
|
104 | ## END
|
105 |
|
106 | ## OK bash STDOUT:
|
107 | status=0
|
108 | ^D
|
109 | ## END
|
110 |
|
111 | #### HISTFILE unset
|
112 |
|
113 | echo '
|
114 | unset HISTFILE
|
115 | history -a
|
116 | echo status=$?
|
117 | ' | $SH -i
|
118 |
|
119 | case $SH in bash) echo '^D' ;; esac
|
120 |
|
121 | ## STDOUT:
|
122 | status=1
|
123 | ^D
|
124 | ## END
|
125 |
|
126 |
|
127 | #### history -d to delete history item
|
128 |
|
129 | rm -f myhist
|
130 | export HISTFILE=myhist
|
131 |
|
132 | $SH --norc -i <<'EOF'
|
133 |
|
134 | echo 42
|
135 | echo 43
|
136 | echo 44
|
137 |
|
138 | history -a
|
139 |
|
140 | history -d 1
|
141 | echo status=$?
|
142 |
|
143 | # Invalid integers
|
144 | history -d -1
|
145 | echo status=$?
|
146 | history -d -2
|
147 | echo status=$?
|
148 | history -d 99
|
149 | echo status=$?
|
150 |
|
151 | case $SH in bash*) echo '^D' ;; esac
|
152 |
|
153 | EOF
|
154 |
|
155 | ## STDOUT:
|
156 | 42
|
157 | 43
|
158 | 44
|
159 | status=0
|
160 | status=2
|
161 | status=2
|
162 | status=2
|
163 | ^D
|
164 | ## END
|
165 |
|
166 | # bash-4.4 used to give more errors like OSH? Weird
|
167 |
|
168 | ## BUG bash STDOUT:
|
169 | 42
|
170 | 43
|
171 | 44
|
172 | status=0
|
173 | status=0
|
174 | status=0
|
175 | status=1
|
176 | ^D
|
177 | ## END
|
178 |
|
179 | #### history usage
|
180 |
|
181 | history not-a-number
|
182 | echo status=$?
|
183 |
|
184 | history 3 too-many
|
185 | echo status=$?
|
186 |
|
187 | ## STDOUT:
|
188 | status=2
|
189 | status=2
|
190 | ## END
|
191 |
|
192 | ## OK bash STDOUT:
|
193 | status=1
|
194 | status=1
|
195 | ## END
|
196 |
|
197 |
|
198 |
|