Some options have already been mentioned; here are a few more:
% cd / % setopt autocd % bin % pwd /bin % ../etc % pwd /etc
Using the AUTOCD option, you can simply type the name of a
directory, and it will become the current directory.
% setopt cdablevars % foo=/tmp % cd foo /tmp
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.
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.
% ls -d *x* 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
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