     * Home
     * FAQ
     * Y2K
     __________________________________________________________________

FAQ

   For the people who do not read the manual!

  Why is the meta key broken in tcsh-5.20 and up?

   On some machines the tty is not set up to pass 8 bit characters by
   default. Tcsh 5.19 used to try to determine if pass8 should be set by
   looking at the terminal's meta key. Unfortunately there is no good way
   of determining if the terminal can really pass 8 characters or not.
   Consider if you are logged in through a modem line with 7 bits and
   parity and your terminal has a meta key. Then tcsh 5.19 would set
   wrongly set pass8.

   If you did like the previous behavior you can add in /etc/csh.login, or
   in .login:
    if ( $?tcsh && $?prompt ) then
        if ( "`echotc meta`" == "yes" ) then
             stty pass8
        endif
    endif

   If you don't have pass8, maybe one of these would work:
    stty -parity -evenp -oddp cs8 -istrip   (rs6000)
    stty -parenb -istrip cs8

   Finally, tcsh will bind all printable meta characters to the self
   insert command. If you don't want that to happen (i.e. use the
   printable meta characters for commands) setenv NOREBIND.

  I ran dbxtool & and shelltool & from tcsh, and they end up in cbreak and no
  echo mode?

   These programs are broken. Background jobs should not try to look at
   the tty. What happens is that dbxtool looks in stderr to inherit the
   tty setups, but tcsh sets up the tty in cbreak and -echo modes, so that
   it can do line editing. This cannot be fixed because tcsh cannot give
   away the tty. Pick one of the following as a workaround:
    dbxtool < /dev/null >& /dev/null &
    /usr/etc/setsid dbxtool &

   If that does not work, for dbxtool at least you can add sh stty sane in
   your .dbxinit file.

  I tried to compile tcsh and it cannot find <locale.h>?

   Your system does not support NLS. Undefine NLS in config_f.h and it
   should work fine.

  Where can I get csh sources?

   Csh sources are now available with the 4.4BSD networking distributions.
   You don't need csh sources to compile tcsh-6.0x.

  I just made tcsh my login shell, and I cannot ftp any more?

   Newer versions of the ftp daemon check for the validity of the user's
   shell before they allow logins. The list of valid login shells is
   either hardcoded or it is usually in a file called /etc/shells. If it
   is hard-coded, then you are out of luck and your best bet is to get a
   newer version of ftpd. Otherwise add tcsh to the list of shells. (For
   AIX this file is called /etc/security/login.cfg.) Remember that the
   full path is required. If there is no /etc/shells, and you are creating
   one, remember to add /bin/csh, /bin/sh, and any other valid shells for
   your system, so that other people can ftp too.

  I am using SunView or OpenWindows and editing is screwed up. In particular my
  arrow keys and backspace don't work right. What am I doing wrong?

   Well, cmdtool tries to do its own command line editing and the effect
   you get is one of using an editor inside an editor. Both try to
   interpret the arrow key sequences and cmdtool wins since it gets them
   first. The solutions are in my order of preference:
     * Don't use suntools
     * Use shelltool instead of cmdtool.
     * Unset edit in tcsh.

  On a SPARCstation running Solaris 2.x and OpenWindows 3.1, inside a cmdtool,
  the short-cut key sequence to clear log (i.e. Meta-e or Diamond-e) doesn't
  work: it just echos ‘e’; or

   Unset edit in tcsh.

  On a SPARCstation running Solaris 2.x and OpenWindows 3.1, maketool (within
  SPARCworks) doesn't work: it just does a `cd’ to the working directory then
  stops.

   Unset edit in tcsh. Using shelltool instead of cmdtool does not fix
   this.

  I rlogin to another machine, and then no matter what I tell stty I cannot get
  it to pass 8 bit characters?

   Maybe you need to use rlogin -8 to tell rlogin to pass 8 bit
   characters.

  Where do I get the public domain directory library?

   Anonymous ftp to ftp://prep.ai.mit.edu/pub/gnu/dirent.tar.Z

  I compiled tcsh using gcc, and when I start up it says: tcsh: Warning no
  access to tty (Invalid Argument). Thus no job control in this shell

   Your <sys/ioctl.h> file is not ansi compliant. You have one of 3
   choices:
     * Run fixincludes from the gcc distribution.
     * Add -traditional to the gcc flags.
     * Compile with cc.

  I compiled tcsh with the SunOS unbundled compiler and now things get echoed
  twice.

   It is a bug in the unbundled optimizer. Lower the optimization level.

  How can I use the arrow keys with hpterm?

   Hp terminals use the arrow keys internally. You can tell hpterm not to
   do that, by sending it the termcap sequence smkx. Since this has to be
   done all the time, the easiest thing is to put it as an alias for
   precmd, or inside the prompt:
    if ($term == "hp") then
        set prompt="%{`echotc smkx`%}$prompt"
    endif

   Note that by doing that you cannot use pgup and pgdn to scroll… Also if
   you are using termcap, replace smkx with ks.

  On POSIX machines ^C and ^Z do not work when tcsh is a login shell?

   Make sure that the interrupt character is set to ^C and suspend is set
   to ^Z; stty -a will show you the current stty settings; stty intr ^C
   susp ^Z will set them to ^C and ^Z respectively.

  I am trying to compile tcsh and I am getting compile errors that look like:

    sh.c:???: `STR???' undeclared, outside of functions [gcc]
    "sh.c", line ???: STR??? undefined [cc]

   You interrupted make, while it was making the automatically generated
   headers. Type make clean; make

  On the cray, sometimes the CR/LF mapping gets screwed up.

   You are probably logged in to the cray via telnet. Cray's telnetd
   implements line mode selection the telnet client you are using does not
   implement telnet line mode. This cause the Cray's telnetd to try to use
   KLUDGELINEMODE. You can turn off telnet line mode from the cray side by
   doing a stty -extproc, or you can get the Cray AIC to build a telnetd
   without KLUDGELINEMODE, or you can compile a new telnet client (from
   the BSD net2 tape), or at least on the suns use: mode character.

  On AU/X, I made tcsh my startup shell, but the mac desktop is not starting up
  (no X11 or Finder), and I only get console emulation.

   Add the pathname to tcsh in /etc/shells and everything should work
   fine.

  On machines that use YP (NIS) tilde expansion might end up in /dev/null

   If this happens complain to your vendor, to get a new version of NIS.
   You can fix that in tcsh by defining YPBUGS in config.h

  Script on SGI 4.0.5 does not give us a tty, so we cannot have job control.

   Their csh does not have job control either. Try:
        % script
        % cat > /dev/tty

  I start tcsh and it takes a couple of minutes to get the prompt.

   You have defined REMOTEHOST and your DNS is not responding. Either
   undefine REMOTEHOST and recompile or fix your DNS.

  If you need help generating your .cshrc file, check out:

     * https://github.com/tcsh-org/tcsh/blob/master/dot.tcshrc
     * https://github.com/tcsh-org/tcsh/blob/master/dot.login

  On POSIX systems the kernel will send hup signals to all the processes in the
  foreground process group if ‘stty hupcl’ is set.

   For example
    ./tcsh
    echo $$
    591
    ./tcsh
    kill -6 591

   Will kill everything, since hup will be sent to all tcsh processes. To
   avoid that you can set stty -hupcl, but it is not recommended.

  When I rsh the meta key stops working on the remote machine.

   Try using rsh -8; this option is undocumented on some systems, but it
   works. If that does not work, get and use ssh/sshd. You'll be better
   off from a security point of view anyway.

  Tcsh compiled under hp/ux-10.x does not pass resource limits correctly when
  ran on hp/ux-11.x systems.

   This is a problem with lack of ABI compatibility between the two
   systems. The only solution is to recompile.

  Refreshing in command line editing can appear broken on some OS's

   This is because the termcap/terminfo description lies about the ability
   of the terminal to use tabs. At least on Compaq/DEC Alpha OSF/1 3.x and
   4.x systems, stty -tabs will cause problems.

  Where can I learn the merits of tcsh vs. bash vs. csh vs. sh etc?

   You can read the manual page section titled [NEW FEATURES] listing
   features that tcsh adds to csh.

   You can read Tom Christiansen's Csh Programming Considered Harmful, a
   document advocating that csh (and by extension, tcsh) should not be
   used for writing shell scripts.

   XXX: Need to find something about bash, but bash is sh-compatible and
   has many of the same interactive features of tcsh (command completion
   does not appear to be as flexible, though).

   Curtains up: introducing the Z shell has a pretty good rundown on zsh.
   Aside from the arguments about csh being evil, tcsh appears to compare
   well with zsh. Zsh is sh and ksh compatible, with many of the
   interactive features of tcsh.

  Why does FreeBSD's tcsh do history browsing differently than I expect?

   On FreeBSD, by default, the up arrow is set to history-search-backward,
   rather than the default up-history. As a result, if you type (part of)
   a word and press up arrow, you'll see previous commands that match the
   prefix. Pretty useful, actually, although it takes some getting used
   to. You can use bindkey to see your settings, and to rebind up & down
   differently if desired.
     __________________________________________________________________

   Page content last updated on 2019-12-31
