[ prev | next | top ]

19. Options

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

[ prev | next | top ]