386BSD 0.1 development
[unix-history] / usr / othersrc / public / zsh-2.2 / README
CommitLineData
b0add2bd
WJ
1You have permission to copy the zsh distribution in whole or in part
2as long as you don't try to make money off of it, or pretend that you
3wrote it.
4
5This is zsh 2.2.0.
6
7To get this shell running, cd into the src directory and type
8"buildzsh". I tested it on the following machines, where it compiled
9just by running this script:
10
11Sun SPARCServer 4/690 running SunOS 4.1.2
12NeXTstation running Mach 2.0
13DECStation-5000 running ULTRIX 4.2
14Iris 4D/20 running IRIX 4.0.1
15HP 9000/834 running HP-UX 7.00
16IBM RS6000 running AIX 3.2
17(rumored to work on a Pyramid)
18
19In general, the more BSD-like your system, the more likely it will work.
20
21Tabstops are 3 spaces. If you're going to look at my code, run it
22though "expand -3" first, or set your tab stops to the same as mine.
23
24There is a zsh mailing list, "zsh-list@cs.uow.edu.au". To have yourself
25added to the list, send a request to "zsh-request@cs.uow.edu.au".
26
27The 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
31Thanks to the following people for help, ideas, accounts, comments,
32patches, etc.:
33
34Charles Hannum
35David Dobkin
36Jim Mattson
37Carlos Carvalho
38Bart Schaefer
39Peter Gray
40Pure Software, Inc.
41Chris P. Ross
42Gary Oberbrunner
43Jonathan Hardwick
44John Navarra
45Michael Lamoureux
46Rick Lyons
47Duncan Sinclair
48Mark R. Rubin
49John Guthrie
50James Bonfield
51Chris Moore
52Thomas Winder
53David J. MacKenzie
54Charles Rendleman
55Richard Ohnemus
56Nik Gervae
57Gottfried Necker
58Goran Larsson
59Paul E. Maisano
60Norbert Kiesel
61Josh Diamond
62Bill Miskovetz
63Peter Moore
64Geoff Wing
65Kent Dickey
66Jean-Jacques Moreau
67Michael Brown
68Bruce Anderson
69Stephen Dum
70Lars E. Thon
71Michael Brennan
72Xev Gittler
73Jarkko Hietaniemi
74Zbigniew J Tyrlik
75Pierre Racz
76Rick Ohnemus
77Richard Dean
78Gary D. Kline
79Robert A. Fabian
80Byron Rakitzis
81Dan Bernstein
82Jonathan Kamens
83Vincent Granet
84David Wilson
85Greg Noel
86Paul Lew
87Dan Esbensen
88Kartik Subbarao
89Ross Bunker
90Michael Marucheck
91Christopher Pirazzi
92Steve Giovanetti
93Kennedy Lemke
94Emin Gun Sirer
95Kazuo Itoh
96lots of other people, I'm sure
97
98Modification history:
99
1002.2.0-2.1.0:
101o should be faster in general
102o fewer compilation warnings
103o SPROMPT now uses %R instead of %s for the incorrect string
104o no longer tries to create FIFOs on NeXTs (thereby causing a panic)
105o now gets usernames from NIS on irises without crashing (SGI's getpwnam()
106 called my strdup(), the pricks. Took me forever to find that. :-) )
107o fewer 7-bit assumptions
108o 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)
111o error message for cd str1 str2 is fixed
112o relative paths (including .) in cdpath now work
113o exclusion patterns in glob: ls *.c~lex.c prints all .c files but lex.c
114o bug with command substitution in chpwd fixed (buffers flushed twice)
115o relative paths in $path now work
116o "kill -9 -FOO" no longer kills shell
117o new options to history/fc:
118 -d = prints date commands were entered
119 -D = prints running time of commands
120o "history <num>" prints all commands SINCE <num> as well
121o history stored differently - should be more efficient
122o bg'ing a suspended zsh no longer causes problems
123o "set" no longer prints ONLY exported params (duh)
124o functions +t now allowed
125o redirection is done AFTER filename generation
126o 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
131o 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
137o getopts is now POSIX conformant
138o 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).
154o foo && bar || fuu now works
155o 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.
161o [[ -e file ]] is now equivalent to [[ -a file ]]
162o [[ -h file ]] is now equivalent to [[ -L file ]]
163o 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.
171o "for i (*.c) do /bin/echo $i ; done | more" no longer hangs
172o coprocesses now work properly
173o READNULLCMD is now used instead of NULLCMD for "< file"
174o POSTEDIT is printed whenever the editor exits
175o rm path/path/* is now reported by checkrmall()
176o cmd >&- works
177o cmd >>! file works
178o time cmd no longer forks an extra process
179o setopt printexitvalue ; echo `false` no longer prints anything
180o here documents work inside eval, etc.
181o $(...) works inside here documents
182o "time" by itself prints the shell timings
183o locals in precmd() or chpwd() work
184o 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, ...
188o ls * only sorts numeric filenames specially if NUMERICGLOBSORT is set
189o setopt braceccl lets "echo {a-zA-Z}" work
190o new options: pushdignoredups nohistbeep overstrike
191o ls **/file is now equivalent to ls ****/file
192o !'s in history are now escaped when you return to them
193o history substitution is not done in script files
194o echo $(!-2) works
195o histverify and correct 'e' no longer put the edit line in the history
196o the :x, :q, and :gs modifiers work properly now
197o zsh -c 'ls =(ls)' no longer hangs
198o VSWTCH is now set to ^Z on the irises
199o zsh & no longer causes havoc
200o USERNAME and LOGNAME are kept separate
201o $manpath has been added for easy access to the $MANPATH components
202o zsh now realizes if it is running under emacs, and resigns itself to
203 the fact rather than panicking
204o SIGQUIT is ignored in the PRODUCTION version of zsh, and kills the shell
205 in the DEBUG version, rather than vice versa.
206o GLOBALZSHENV has been added, and GLOBALZPROFILE is sourced in the
207 proper place
208o "kill %" no longer causes the prompt to be printed 3 times if notify
209 is set on a NeXT
210o REPORTTIME has been added; if a job runs longer than this many seconds,
211 timing statistics are reported
212o timing statistics now include a job name (%J)
213o no longer talks about SIGHUPed jobs if the kill failed
214o no longer talks about running jobs which don't exist if you do eval exit
215 or if you have notify unset
216o foo=bar comman[tab], for/select/foreach i (*.c[tab] both work
217o [base]num inside $[...] works
218o foo=pat(n|ern) works
219o cd - prints the new directory
220o l[tab] works if l is an alias
221o select foo ; ... works (in $argv is assumed)
222o select reads from the right input
223o math identifiers can now contain numbers and _'s.
224o lots of serious memory heap trashing and leaks fixed
225o echo $HOME[*] no longer crashes the shell
226o SIGWINCH now changes LINES and COLUMNS in the environment
227o typeset +r TTY; TTY=foo no longer causes problems
228o ~ substitution is no longer done in FIGNORE
229o assignment to SECONDS works
230o "else if" is no longer a synonym for "elif" <thud>
231o lots of problems with null lists in flow constructs fixed
232o no correction done for >file
233o echo ${foo%bar is no longer weird
234o modifying array substitutions works
235o ^O can be bound to something
236o command substitution in signal handlers no longer causes problems
237o spelling correction is better ($PAHT is corrected), and SPROMPT
238 allows all the regular PROMPT escapes
239o new prompt escape sequence: %D{...} formats ... part using strftime
240o shell input no longer butchered using IFS
241o vi cmd mode has 's' bound to visubstitute, as it should be
242o you can use ^XS and ^XR in i-search mode
243o bindings to ^Z and ^@ work now on the irises
244o ^V{^S,^Q,^Z,etc} now works on sgttyb victims
245o nopromptclobber changed to nopromptcr
246o vi 'u' undo works a little better (?)
247o ESC-key bindings aren't screwed up if VISUAL is set to vi
248o newline in prompt now works reliably
249o vi change and delete work with forward-word/search, etc.
250o somewhat suboptimal screen refresh on irises fixed (several seconds
251 per character inserted when TERM=xterm??)
252o select list printing slightly different
253o magic-space's handling of hatchars "fixed"
254
2550.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
2900.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
3320.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
4030.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
434Known Bugs
435 - terminal acts weird under OpenWindows cmdtool
436 - xterm run in background inherits bad terminal modes
437