Some options have already been mentioned; here are a few more:
Using the AUTOCD option, you can simply type the name of a directory, and it will become the current directory.
% cd / % setopt autocd % bin % pwd /bin % ../etc % pwd /etc
With CDABLEVARS, if the argument to cd is the name of a parameter whose value is a valid directory, it will become the current directory.
% setopt cdablevars % foo=/tmp % cd foo /tmp
CORRECT turns on spelling correction for commands, and the CORRECTALL option turns on spelling correction for all arguments.
% setopt correct % sl zsh: correct ‘sl’ to ‘ls’ [nyae]? y % setopt correctall % ls x.v11r4 zsh: correct ‘x.v11r4’ to ‘X.V11R4’ [nyae]? n /usr/princton/src/x.v11r4 not found % ls /etc/paswd zsh: correct to ‘/etc/paswd’ to ‘/etc/passwd’ [nyae]? y /etc/passwd
If you press y when the shell asks you if you want to correct a word, it will be corrected. If you press n, it will be left alone. Pressing a aborts the command, and pressing e brings the line up for editing again, in case you agree the word is spelled wrong but you don’t like the correction.
Normally, a quoted expression may contain a newline:
% echo ’ > foo > ’ foo %
With CSHJUNKIEQUOTES set, this is illegal, as it is in csh.
% setopt cshjunkiequotes % ls ’foo zsh: unmatched ’
GLOBDOTS lets files beginning with a . be matched without explicitly specifying the dot. This can also be specified for a particular pattern by appending (D) to it.
% ls -d *x* Mailboxes % ls -d *x*(D) .exrc .pnewsexpert .xserverrc .mushexpert .xinitrc Mailboxes % setopt globdots % ls -d *x* .exrc .pnewsexpert .xserverrc .mushexpert .xinitrc Mailboxes
HISTIGNOREDUPS prevents the current line from being saved in the history if it is the same as the previous one; HISTIGNORESPACE prevents the current line from being saved if it begins with a space.
% PROMPT=’%h> ’ 39> setopt histignoredups 40> echo foo foo 41> echo foo foo 41> echo foo foo 41> echo bar bar 42> setopt histignorespace 43> echo foo foo 43> echo fubar fubar 43> echo fubar fubar
IGNOREBRACES turns off csh-style brace expansion.
% echo x{y{z,a},{b,c}d}e
xyze xyae xbde xcde
% setopt ignorebraces
% echo x{y{z,a},{b,c}d}e
x{y{z,a},{b,c}d}e
IGNOREEOF forces the user to type exit or logout, instead of just pressing ˆD.
% setopt ignoreeof % ˆD zsh: use ’exit’ to exit.
INTERACTIVECOMMENTS turns on interactive comments; comments begin with a #.
% setopt interactivecomments % date # this is a comment Fri May 24 06:54:14 EDT 1991
NOBEEP makes sure the shell never beeps.
NOCLOBBER prevents you from accidentally overwriting an existing file.
% setopt noclobber % cat /dev/null >˜/.zshrc zsh: file exists: /u/pfalstad/.zshrc
If you really do want to clobber a file, you can use the >! operator. To make things easier in this case, the > is stored in the history list as a >!:
% cat /dev/null >! ˜/.zshrc % cat /etc/motd > ˜/.zshrc zsh: file exists: /u/pfalstad/.zshrc % !! cat /etc/motd >! ˜/.zshrc % ...
RCQUOTES lets you use a more elegant method for including single quotes in a singly quoted string:
% echo ’"don’\’’t do that."’ "don’t do that." % echo ’"don’’t do that."’ "dont do that." % setopt rcquotes % echo ’"don’’t do that."’ "don’t do that."
Finally, SUNKEYBOARDHACK wins the award for the strangest option. If a line ends with ‘, and there are an odd number of them on the line, the shell will ignore the trailing ‘. This is provided for keyboards whose RETURN key is too small, and too close to the ‘ key.
% setopt sunkeyboardhack % date‘ Fri May 24 06:55:38 EDT 1991