Putting It All Together

The following is a complete example for ˜/.cshrc that puts location information in your window titlebar when you run xterm or hpterm, and in your prompt otherwise:

if ($?prompt) then                         # verify that shell is interactive
    if (xterm =~ $TERM) then               # xterm is running
        source ~/.settitle
    else if (hpterm =~ $TERM) then         # hpterm is running
        source ~/.settitle-hp
    else                                   # xterm/hpterm are not running
        if ($?tcsh) then                   # shell is tcsh
            set prompt = "%~% "
        else                               # shell is csh
            alias setprompt 'set prompt = "$cwd:t% "'
            setprompt
            alias cd 'cd \!*;setprompt'
            alias pushd 'pushd \!*;setprompt'
            alias popd 'popd \!*;setprompt'
        endif
        alias ncsa source ~/.settitle
    endif
endif

The outermost if-test ensures that only interactive shells process the inner commands. Those inner commands determine whether or not xterm or hpterm are running, and take action accordingly:

  • If xterm or hpterm are running, .settitle or .settitle-hp are executed to set up location display in the window title.

  • If neither xterm nor hpterm are running, location information is displayed in the prompt. This is done using tcsh's prompt formatting sequences if the shell is tcsh, and with the prompt setting aliases otherwise. Also, the ncsa alias is defined in case you are connecting with NCSA Telnet, so that you can display location information in the window title by typing ncsa after logging in.

Get Using csh & tcsh now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.