TENEX C Shell
Developer(s)Ken Greer, Paul Placeway, Christos Zoulas, et al.
Stable release
6.24.10[1] Edit this on Wikidata / 14 April 2023; 9 months ago (14 April 2023)
Repository
Written inC
Operating systemCross-platform
TypeUnix shell
License2002: BSD-3-Clause[2][3]
1991: BSD-4-Clause[4]
Websitewww.tcsh.org

tcsh (/ˌtˈsʃɛl/ “tee-see-shell”, /ˈtʃɛl/ “tee-shell”, or as “tee see ess aitch”, tcsh) is a Unix shell based on and backward compatible with the C shell (csh).

Shell

It is essentially the C shell with programmable command-line completion, command-line editing, and a few other features. Unlike the other common shells, functions cannot be defined in a tcsh script and the user must use aliases instead (as in csh). It is the native root shell for some BSD-based systems, including FreeBSD 13 and earlier. (FreeBSD 14 changed the default root shell to sh to match the default user shell[5] whereas OpenBSD uses the Korn shell ksh for both root and regular users.[6])

tcsh added filename and command completion and command line editing concepts borrowed from the TENEX operating system, which is the source of the “t”.[7] Because it only added functionality and did not change what was there, tcsh remained backward compatible[8] with the original C shell. Though it started as a side branch from the original csh source tree that Bill Joy had created, tcsh is now the main branch for ongoing development.

tcsh is very stable but new releases continue to appear roughly once a year, consisting mostly of minor bug fixes.[9]

On many systems, such as macOS and Red Hat Linux, csh is actually tcsh. Often one of the two files is either a hard link or a symbolic link to the other, so that either name refers to the same improved version of the C shell (although behavior may be altered depending on which name is used).

On Debian and some derivatives (including Ubuntu), there are two different packages: csh and tcsh. The former is based on the original BSD version of csh[10][11] and the latter is the improved tcsh.[12][13]

History

The “t” in tcsh comes from the “T” in TENEX, an operating system which inspired Ken Greer at Carnegie Mellon University, the author of tcsh, with its command-completion feature.[14] Greer began working on his code to implement Tenex-style file name completion in September 1975, finally merging it into the C shell in December 1981.[7] Mike Ellis at Fairchild A.I. Labs added command completion in September 1983.[7] On October 3, 1983, Greer posted source to the net.sources newsgroup.[7]

Significant features

Deployment

Early versions of Mac OS X shipped with tcsh as the default shell, but the default for new accounts became bash as of 10.3, then zsh as of 10.15. (tcsh is still provided, and upgrading the OS does not change the shell of any existing accounts). tcsh was the default root shell of FreeBSD prior to 14.0 (the current shell and default user shell in older versions, is POSIX-based)[15][16][17] and its descendants like DragonFly BSD and DesktopBSD.

See also

References

  1. ^ "Release 6.24.10". 14 April 2023. Retrieved 3 May 2023.
  2. ^ "remove clause 3 of the copyright". GitHub. 2002-03-08.
  3. ^ "Remove clause 3 of the copyright (changed in other files 2002-03-08)". GitHub. 2014-07-14.
  4. ^ "Tcsh-6.00 release". GitHub. 1991-07-04.
  5. ^ "FreeBSD Quickstart Guide for Linux® Users".
  6. ^ "OpenBSD for Linux Users".
  7. ^ a b c d Ken Greer (3 Oct 1983). "C shell with command and filename recognition/completion". Newsgroupnet.sources. Retrieved 29 December 2010.
  8. ^ tcsh(1) man page. tcsh.
  9. ^ Fixes file in tcsh-17 June 2000.
  10. ^ Ubuntu - Details of package csh. Packages.ubuntu.com.
  11. ^ Debian - Details of package csh. Packages.debian.org.
  12. ^ Ubuntu - Details of package tcsh. Packages.ubuntu.com.
  13. ^ Debian - Details of package tcsh. Packages.debian.org.
  14. ^ "The T in tcsh". Archived from the original on 14 April 2012. Retrieved 31 October 2013.
  15. ^ Michael Urban; Brian Tiemann (2002). Sams teach yourself FreeBSD in 24 hours. Sams Publishing. p. 56. ISBN 978-0-672-32424-6.
  16. ^ POSIX 2008 Shell Command Language "The System V shell was selected as the starting point for the Shell and Utilities volume of POSIX.1-2008. The BSD C shell was excluded from consideration"
  17. ^ "FreeBSD Quickstart Guide for Linux® Users". FreeBSD Documentation Portal. Retrieved 2024-02-04.