[ 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 ]