Commit | Line | Data |
---|---|---|
b0add2bd WJ |
1 | You have permission to copy the zsh distribution in whole or in part |
2 | as long as you don't try to make money off of it, or pretend that you | |
3 | wrote it. | |
4 | ||
5 | This is zsh 2.2.0. | |
6 | ||
7 | To get this shell running, cd into the src directory and type | |
8 | "buildzsh". I tested it on the following machines, where it compiled | |
9 | just by running this script: | |
10 | ||
11 | Sun SPARCServer 4/690 running SunOS 4.1.2 | |
12 | NeXTstation running Mach 2.0 | |
13 | DECStation-5000 running ULTRIX 4.2 | |
14 | Iris 4D/20 running IRIX 4.0.1 | |
15 | HP 9000/834 running HP-UX 7.00 | |
16 | IBM RS6000 running AIX 3.2 | |
17 | (rumored to work on a Pyramid) | |
18 | ||
19 | In general, the more BSD-like your system, the more likely it will work. | |
20 | ||
21 | Tabstops are 3 spaces. If you're going to look at my code, run it | |
22 | though "expand -3" first, or set your tab stops to the same as mine. | |
23 | ||
24 | There is a zsh mailing list, "zsh-list@cs.uow.edu.au". To have yourself | |
25 | added to the list, send a request to "zsh-request@cs.uow.edu.au". | |
26 | ||
27 | The author can be reached via email to one of the following addresses: | |
28 | "pfalstad@phoenix.princeton.edu", "pfalstad@cs.ucsd.edu", "pf@ttisms.com", | |
29 | "pf@gnu.ai.mit.edu". | |
30 | ||
31 | Thanks to the following people for help, ideas, accounts, comments, | |
32 | patches, etc.: | |
33 | ||
34 | Charles Hannum | |
35 | David Dobkin | |
36 | Jim Mattson | |
37 | Carlos Carvalho | |
38 | Bart Schaefer | |
39 | Peter Gray | |
40 | Pure Software, Inc. | |
41 | Chris P. Ross | |
42 | Gary Oberbrunner | |
43 | Jonathan Hardwick | |
44 | John Navarra | |
45 | Michael Lamoureux | |
46 | Rick Lyons | |
47 | Duncan Sinclair | |
48 | Mark R. Rubin | |
49 | John Guthrie | |
50 | James Bonfield | |
51 | Chris Moore | |
52 | Thomas Winder | |
53 | David J. MacKenzie | |
54 | Charles Rendleman | |
55 | Richard Ohnemus | |
56 | Nik Gervae | |
57 | Gottfried Necker | |
58 | Goran Larsson | |
59 | Paul E. Maisano | |
60 | Norbert Kiesel | |
61 | Josh Diamond | |
62 | Bill Miskovetz | |
63 | Peter Moore | |
64 | Geoff Wing | |
65 | Kent Dickey | |
66 | Jean-Jacques Moreau | |
67 | Michael Brown | |
68 | Bruce Anderson | |
69 | Stephen Dum | |
70 | Lars E. Thon | |
71 | Michael Brennan | |
72 | Xev Gittler | |
73 | Jarkko Hietaniemi | |
74 | Zbigniew J Tyrlik | |
75 | Pierre Racz | |
76 | Rick Ohnemus | |
77 | Richard Dean | |
78 | Gary D. Kline | |
79 | Robert A. Fabian | |
80 | Byron Rakitzis | |
81 | Dan Bernstein | |
82 | Jonathan Kamens | |
83 | Vincent Granet | |
84 | David Wilson | |
85 | Greg Noel | |
86 | Paul Lew | |
87 | Dan Esbensen | |
88 | Kartik Subbarao | |
89 | Ross Bunker | |
90 | Michael Marucheck | |
91 | Christopher Pirazzi | |
92 | Steve Giovanetti | |
93 | Kennedy Lemke | |
94 | Emin Gun Sirer | |
95 | Kazuo Itoh | |
96 | lots of other people, I'm sure | |
97 | ||
98 | Modification history: | |
99 | ||
100 | 2.2.0-2.1.0: | |
101 | o should be faster in general | |
102 | o fewer compilation warnings | |
103 | o SPROMPT now uses %R instead of %s for the incorrect string | |
104 | o no longer tries to create FIFOs on NeXTs (thereby causing a panic) | |
105 | o now gets usernames from NIS on irises without crashing (SGI's getpwnam() | |
106 | called my strdup(), the pricks. Took me forever to find that. :-) ) | |
107 | o fewer 7-bit assumptions | |
108 | o which/whence/type have new options: | |
109 | -a = all (find all occurences of command in path) | |
110 | -c = csh-style which (default for "which" command) | |
111 | o error message for cd str1 str2 is fixed | |
112 | o relative paths (including .) in cdpath now work | |
113 | o exclusion patterns in glob: ls *.c~lex.c prints all .c files but lex.c | |
114 | o bug with command substitution in chpwd fixed (buffers flushed twice) | |
115 | o relative paths in $path now work | |
116 | o "kill -9 -FOO" no longer kills shell | |
117 | o new options to history/fc: | |
118 | -d = prints date commands were entered | |
119 | -D = prints running time of commands | |
120 | o "history <num>" prints all commands SINCE <num> as well | |
121 | o history stored differently - should be more efficient | |
122 | o bg'ing a suspended zsh no longer causes problems | |
123 | o "set" no longer prints ONLY exported params (duh) | |
124 | o functions +t now allowed | |
125 | o redirection is done AFTER filename generation | |
126 | o print changes: | |
127 | o print -u# prints to fd # | |
128 | o print -p prints to coproc | |
129 | o -D and -P perform \ substitution first | |
130 | o print -0 changed to print -N | |
131 | o read changes: | |
132 | o read -u# reads from fd # | |
133 | o read -p reads from coproc | |
134 | o read -z waits for input if nothing on buffer stack | |
135 | o no longer reads from fd 0 if shell is getting input from there | |
136 | o echo -n foo | read x now works | |
137 | o getopts is now POSIX conformant | |
138 | o compctl builtin added, replacing hostcmds, foocmds, etc. Controls | |
139 | completion of various commands in zle. | |
140 | format: compctl -options cmdnams ... | |
141 | options tell where to get possible matches from, and include: | |
142 | -c = command names | |
143 | -f = filenames | |
144 | -h = hostnames ($hosts) | |
145 | -o = options | |
146 | -v = vars | |
147 | -b = bindings | |
148 | -k name = elements of $name array | |
149 | Any number of these options may be used together. | |
150 | In addition, compctl -C -options will set the default completion | |
151 | names when in command position (by default -c), and compctl -D -options | |
152 | will set the default completion names used after unrecognized commands | |
153 | or after redirections (by default -f). | |
154 | o foo && bar || fuu now works | |
155 | o ttyctl builtin added | |
156 | ttyctl -f freezes the tty. no changes made to the tty settings by | |
157 | external programs will be honored when this command is in effect. | |
158 | ttyctl -u unfreezes the tty. | |
159 | typically, "ttyctl -f" would be used in a zlogin or zshrc script after | |
160 | "stty" has been called to set up the terminal. | |
161 | o [[ -e file ]] is now equivalent to [[ -a file ]] | |
162 | o [[ -h file ]] is now equivalent to [[ -L file ]] | |
163 | o the path is now hashed incrementally. | |
164 | o if the HASHCMDS option is unset, path hashing is not done at all. | |
165 | o if the HASHCMDS option is set but HASHDIRS is unset, commands are placed | |
166 | in the hash table when first executed. | |
167 | o if the HASHCMDS and HASHDIRS options are both set, commands are placed | |
168 | in the hash table when first executed, along with all commands in | |
169 | the directory that command was found in (and all directories earlier | |
170 | in the path). This is the default situation. | |
171 | o "for i (*.c) do /bin/echo $i ; done | more" no longer hangs | |
172 | o coprocesses now work properly | |
173 | o READNULLCMD is now used instead of NULLCMD for "< file" | |
174 | o POSTEDIT is printed whenever the editor exits | |
175 | o rm path/path/* is now reported by checkrmall() | |
176 | o cmd >&- works | |
177 | o cmd >>! file works | |
178 | o time cmd no longer forks an extra process | |
179 | o setopt printexitvalue ; echo `false` no longer prints anything | |
180 | o here documents work inside eval, etc. | |
181 | o $(...) works inside here documents | |
182 | o "time" by itself prints the shell timings | |
183 | o locals in precmd() or chpwd() work | |
184 | o new glob qualifiers | |
185 | o pat(M) sets markdirs, pat(^M) unsets it | |
186 | o pat(N) sets nullglob, ... | |
187 | o pat(D) sets globdots, ... | |
188 | o ls * only sorts numeric filenames specially if NUMERICGLOBSORT is set | |
189 | o setopt braceccl lets "echo {a-zA-Z}" work | |
190 | o new options: pushdignoredups nohistbeep overstrike | |
191 | o ls **/file is now equivalent to ls ****/file | |
192 | o !'s in history are now escaped when you return to them | |
193 | o history substitution is not done in script files | |
194 | o echo $(!-2) works | |
195 | o histverify and correct 'e' no longer put the edit line in the history | |
196 | o the :x, :q, and :gs modifiers work properly now | |
197 | o zsh -c 'ls =(ls)' no longer hangs | |
198 | o VSWTCH is now set to ^Z on the irises | |
199 | o zsh & no longer causes havoc | |
200 | o USERNAME and LOGNAME are kept separate | |
201 | o $manpath has been added for easy access to the $MANPATH components | |
202 | o zsh now realizes if it is running under emacs, and resigns itself to | |
203 | the fact rather than panicking | |
204 | o SIGQUIT is ignored in the PRODUCTION version of zsh, and kills the shell | |
205 | in the DEBUG version, rather than vice versa. | |
206 | o GLOBALZSHENV has been added, and GLOBALZPROFILE is sourced in the | |
207 | proper place | |
208 | o "kill %" no longer causes the prompt to be printed 3 times if notify | |
209 | is set on a NeXT | |
210 | o REPORTTIME has been added; if a job runs longer than this many seconds, | |
211 | timing statistics are reported | |
212 | o timing statistics now include a job name (%J) | |
213 | o no longer talks about SIGHUPed jobs if the kill failed | |
214 | o no longer talks about running jobs which don't exist if you do eval exit | |
215 | or if you have notify unset | |
216 | o foo=bar comman[tab], for/select/foreach i (*.c[tab] both work | |
217 | o [base]num inside $[...] works | |
218 | o foo=pat(n|ern) works | |
219 | o cd - prints the new directory | |
220 | o l[tab] works if l is an alias | |
221 | o select foo ; ... works (in $argv is assumed) | |
222 | o select reads from the right input | |
223 | o math identifiers can now contain numbers and _'s. | |
224 | o lots of serious memory heap trashing and leaks fixed | |
225 | o echo $HOME[*] no longer crashes the shell | |
226 | o SIGWINCH now changes LINES and COLUMNS in the environment | |
227 | o typeset +r TTY; TTY=foo no longer causes problems | |
228 | o ~ substitution is no longer done in FIGNORE | |
229 | o assignment to SECONDS works | |
230 | o "else if" is no longer a synonym for "elif" <thud> | |
231 | o lots of problems with null lists in flow constructs fixed | |
232 | o no correction done for >file | |
233 | o echo ${foo%bar is no longer weird | |
234 | o modifying array substitutions works | |
235 | o ^O can be bound to something | |
236 | o command substitution in signal handlers no longer causes problems | |
237 | o spelling correction is better ($PAHT is corrected), and SPROMPT | |
238 | allows all the regular PROMPT escapes | |
239 | o new prompt escape sequence: %D{...} formats ... part using strftime | |
240 | o shell input no longer butchered using IFS | |
241 | o vi cmd mode has 's' bound to visubstitute, as it should be | |
242 | o you can use ^XS and ^XR in i-search mode | |
243 | o bindings to ^Z and ^@ work now on the irises | |
244 | o ^V{^S,^Q,^Z,etc} now works on sgttyb victims | |
245 | o nopromptclobber changed to nopromptcr | |
246 | o vi 'u' undo works a little better (?) | |
247 | o ESC-key bindings aren't screwed up if VISUAL is set to vi | |
248 | o newline in prompt now works reliably | |
249 | o vi change and delete work with forward-word/search, etc. | |
250 | o somewhat suboptimal screen refresh on irises fixed (several seconds | |
251 | per character inserted when TERM=xterm??) | |
252 | o select list printing slightly different | |
253 | o magic-space's handling of hatchars "fixed" | |
254 | ||
255 | 0.03-1.0: | |
256 | - "..../" is now "****/". I know this isn't backward compatible, | |
257 | but I had no choice; the string "..../" was unquotable. | |
258 | - parser was rewritten and improved | |
259 | - completion was improved, several bugs fixed (including | |
260 | the "$([tab]" bug) | |
261 | - vi mode editing is improved | |
262 | - the value of PWD and OLDPWD in the environment now change | |
263 | - the PROMPT formatting strings %W and %D now print the month | |
264 | correctly | |
265 | - >&2 echo "error message" no longer prints "bad file number" | |
266 | - ${foo%pat} no longer alters the value of foo | |
267 | - $_ works | |
268 | - ALL_EXPORT no longer causes let statements to crash the shell | |
269 | - continue works | |
270 | - echo $MAIL no longer dumps core if MAIL is null | |
271 | - the new tty driver is selected by default | |
272 | - the s modifier no longer complains if it can't find the string | |
273 | to substitute | |
274 | - list-choices no longer fignores files | |
275 | - cd is now smarter about symlinks | |
276 | - negative subscripts other than -1 now work | |
277 | - $(<filename) works better if filename contains $, ~, or = | |
278 | - rehash no longer wastes memory | |
279 | - with name=value assignments, name is checked to see if it is | |
280 | a valid identifier | |
281 | - !1; !2 no longer eats the semicolon | |
282 | - $foo:h never returns the empty string if foo starts with / | |
283 | - select crashed with some compilers | |
284 | - problems with aliases in <(...) constructs have been fixed | |
285 | - links pointing to nowhere are denoted with an '&' in listtypes | |
286 | - negative arguments are supported | |
287 | - the shell does not screw around with the tty so much | |
288 | - lots of other stuff | |
289 | ||
290 | 0.02-0.03: | |
291 | - two stupid bugs that were introduced in the last patch were fixed: | |
292 | - multiple command substitution on a line failed | |
293 | - a file descriptor leak caused the shell to crash after a while | |
294 | - added 'An Introduction to the Z Shell' | |
295 | - behaves properly when the tty session dies suddenly | |
296 | - had a serious memory leak on some systems | |
297 | - the test and [ builtins have been added, although [[...]] | |
298 | is more efficient | |
299 | - in your prompt, %m2 now prints foo.bar, %m3 prints foo.bar.com, etc. | |
300 | - the -D and -P options to print have been added | |
301 | - the NULLCMD and ZDOTDIR parameters have been added | |
302 | - ${*:-foo} works | |
303 | - "$@" and "$arr[@]" work like ksh | |
304 | - .zprofile is sourced before .zshrc in login shells | |
305 | - the CSHJUNKIEQUOTES and PUSHDMINUS options have been added | |
306 | - REAL_TTY compilation switch added | |
307 | - aliases beginning with a space cause the history line to be junked | |
308 | if HISTIGNORESPACE is set | |
309 | - echo prints bad options instead of complaining about them | |
310 | - "set -o" no longer dumps core | |
311 | - "alias a=alias; date >a" no longer creates a file called "alias" | |
312 | - "function foo() \n { date }" is now legal (the () and the newline | |
313 | are allowed) | |
314 | - nested brace expressions work properly | |
315 | - disabled commands stay disabled after a rehash (or after the shell | |
316 | finishes sourcing your .zshrc) | |
317 | - corrected aliases work | |
318 | - executables in the currect directory are now completed | |
319 | - in "case foo", "foo" is not interpreted as a directory name with autocd | |
320 | - aliases were not always interpreted properly after a completion | |
321 | - bindkey '^?' didn't work | |
322 | - echo ${HOST:-{bar}} didn't work | |
323 | - editor update is more efficient in some cases | |
324 | - menucomplete works even better | |
325 | - assign to an array element "foo[1]=bar" didn't always work | |
326 | - doesn't print directories like "~tmp" if HOME=/ | |
327 | - quotes in case statement patterns caused problems | |
328 | - pressing ^C right after typing "fc" caused the editor to share | |
329 | the tty with the shell | |
330 | - echo $(echo 2) produced no output, but echo $(echo x) worked fine (weird) | |
331 | ||
332 | 0.01-0.02: | |
333 | - added script to convert most csh aliases to zsh aliases or functions | |
334 | - fc -l (history) now appears in the history itself; HISTNOSTORE | |
335 | option added to get old behavior | |
336 | - the POSIX process group race has been fixed; so 'w | more' should | |
337 | no longer hang | |
338 | - FCEDIT added, to match the documentation | |
339 | - %{...%} in the prompt added | |
340 | - execute-named-cmd and execute-last-named-cmd bindings added | |
341 | - sources ~/.zshenv in all shells, even if not interactive, unless | |
342 | -f is given | |
343 | - ^ and # are no longer `magic' by default; use EXTENDEDGLOB option | |
344 | to use them | |
345 | - now checks for tty sanity before each command | |
346 | - if the right side of a variable assignment expands to more than | |
347 | one word, array assignment is assumed; so foo=*.c now works | |
348 | - ~foo is no longer expanded in completion | |
349 | - select now works even if the argument list is not sorted | |
350 | - menucompletebeep option added | |
351 | - emacs mode is now 8-bit clean by default; use bindkey -em | |
352 | to get your meta key back | |
353 | - fc -R, fc -W added | |
354 | - nocorrect added | |
355 | - lines from history file are now split into words at spaces | |
356 | - glob-complete, accept-and-menu-complete, | |
357 | beginning-of-line-hist, end-of-line-hist bindings added | |
358 | - insert-last-word bound to M-. in emacs mode by default; now moves | |
359 | back through the history if run repeatedly | |
360 | - J and K now bound to history search in vi mode | |
361 | - delete-char no longer core dumps on an empty line | |
362 | - menu-complete works better | |
363 | - the editor checks the settings of VISUAL and EDITOR to set | |
364 | default bindings | |
365 | - using [[ ... ]] expressions on a symbolic link works as expected | |
366 | - various problems with globbing were fixed | |
367 | - xx is now the same as !! if HISTCHARS=x | |
368 | - added config.h entry for compilers that don't know about void * | |
369 | - lexical analysis made more efficient | |
370 | - "if echo $? ; then : ; fi" no longer always prints 0 | |
371 | - removed all enums, '\x7f's from code | |
372 | - in "case foo in bar) xxx ;; esac", foo and bar are no longer subject | |
373 | to command alias expansion | |
374 | - works on platforms where toupper('A') != 'A' | |
375 | - \e sequence added to echo | |
376 | - + options now work with set | |
377 | - AUTORESUME and AUTOCD work better | |
378 | - getopts works better (?) | |
379 | - spell checking works better | |
380 | - "let 2+3=" no longer crashes the shell | |
381 | - "foo=bar; echo ${=foo}" no longer crashes the shell | |
382 | - "zsh -c" or "zsh -o" no longer causes a core dump | |
383 | - "unset MAIL; echo $MAIL" no longer causes a core dump | |
384 | - "(xterm&xterm&)&" no longer causes a core dump | |
385 | - "echo $HOM[tab]" beeps instead of deleting "$HOM" | |
386 | - incremental history search works better | |
387 | - the pwd of a fg'd job is now printed _before_ resuming it | |
388 | - rv=`echo -n foo` no longer puts garbage in $rv | |
389 | - "=1/*" now works as expected | |
390 | - ^Z can now be bound to something | |
391 | - the STTY parameter and the builtin builtin are now documented | |
392 | - IFS=x; foo=`echo foo` no longer puts a newline in $foo | |
393 | - $status added for csh compatibility | |
394 | - arrays are automatically expanded if you say 'foo[1234]=x' | |
395 | - shell now ignores SIGQUIT (it was commented out before :-) | |
396 | - the times builtin works on systems where times() returns > 0 | |
397 | - no longer hangs the terminal if you ^S before flow control | |
398 | is turned off | |
399 | - "date ; read foo" now works in interactive shells | |
400 | - <<-foo is now parsed as <<- foo, not << -foo | |
401 | - fixed various errors in the documentation | |
402 | ||
403 | 0.00-0.01: | |
404 | - %M and %m now work as documented. | |
405 | - bad things no longer happen if COLUMNS is set to 0 | |
406 | - SH_WORD_SPLIT and ${=foo} now work | |
407 | - the default value of WORDCHARS includes more characters | |
408 | - if the cursor is at the end of the line, vi-cmd-mode | |
409 | moves it back one position. | |
410 | - delete-char now acts more like x in vi. | |
411 | - a "prompt" parameter has been added, which is equivalent to | |
412 | PROMPT and PS1. | |
413 | - zsh no longer expands symbolic links. The CHASELINKS option | |
414 | has been provided to get the old behavior. | |
415 | - history searches ignore lines that are the same as the line | |
416 | in the buffer. | |
417 | - you can get a literal ! in your prompt now with \!. | |
418 | - -z, -n, and != in [[ ... ]] expressions work. | |
419 | - the shell no longer hangs when inputting "[[ ]\n" | |
420 | - the "menu-complete" and "menu-expand-or-complete" bindings have | |
421 | been added. | |
422 | - menu-complete no longer beeps. | |
423 | - reverse-menu-complete no longer dumps core if it gets called before | |
424 | a normal completion. | |
425 | - typeahead lines are no longer thrown away on machines with sgttyb. | |
426 | - !foo no longer matches lines with 'foo' in them (not at the beginning) | |
427 | - kill -9 % no longer kills the shell | |
428 | - no longer sources .zshrc from shell scripts or with -c | |
429 | - no longer needs limits.h, strtol | |
430 | - exporting HOSTTYPE, etc. works | |
431 | - fixed serious bugs related to . in path | |
432 | - numbers in weird bases now work | |
433 | ||
434 | Known Bugs | |
435 | - terminal acts weird under OpenWindows cmdtool | |
436 | - xterm run in background inherits bad terminal modes | |
437 |