fbpx
Wikipedia

Thompson shell

The Thompson shell was the first Unix shell, introduced in the first version of Unix in 1971, and was written by Ken Thompson.[1] It was a simple command interpreter, not designed for scripting, but nonetheless introduced several innovative features to the command-line interface and led to the development of the later Unix shells.

Thompson shell
Original author(s)Ken Thompson
Developer(s)AT&T Bell Laboratories
Initial releaseNovember 3, 1971; 51 years ago (1971-11-03)
Operating systemUnix and Unix-like
TypeUnix shell

History Edit

The name "shell" for a command-line interpreter and the concept of making the shell a user program outside of the operating system kernel were introduced in Unix's precursor Multics.

An early feature of the Thompson shell was a compact syntax for input/output redirection. In Multics, redirecting the input or output of a command required separate commands to start and stop redirection; in Unix, one could simply add an argument to the command line consisting of the < symbol followed by a filename for input or the > symbol for output, and the shell would redirect I/O for the duration of the command. This syntax was already present by the release of the first version of Unix in 1971.

A later addition was the concept of pipes. At the suggestion of Douglas McIlroy, the redirection syntax was expanded so that the output of one command could be passed to the input of another command. The original pipe syntax, as described in the Version 3 manual, was:

command1 >command2> 

This syntax proved too ambiguous and was easily confused with redirection to and from files—the system cannot tell if "command2" is the command "command2" or the file "command2". By Version 4, the syntax had changed to use both the | and ^ symbols to denote pipes:

command1 | command2 

This produces exactly the same result as:

command1 ^ command2 

The > symbol changed into:

command1 > file1 

This would put the output of command1 into file1.

The Thompson shell syntax for redirection with < and >, and piping with |, has proven durable and has been adopted by most other Unix shells and command shells of several other operating systems, most notably on DOS, OS/2 and Microsoft Windows.

Design Edit

The shell's design was intentionally minimalistic; even the if and goto statements, essential for control of program flow, were implemented as separate commands.[1]

The shell has no facilities for comments besides a builtin command :. Programmers simply write text after this command, which ignores all parameters and simply succeeds. Other builtins include chdir, exit, login, newgrp, shift, and wait.[2]

The if command combines the uses of modern-day Bourne shell test and if. The command first looks for an expression (which can be similar to modern-day test or involve an external command) then treats the rest of the command-line as the command to execute if the condition turns out true. There is no else branch.[3]

goto is implemented in an interesting way, as it is separate from the shell. When asked to jump to "LABEL", it seeks the current command file for a line that says : LABEL (recall that : is simply ignored), then exits. When the shell tries to read a next line, the repositioned file descriptor will direct it to the labelled location.[4]

There is no redirection of additional file descriptors other than standard input and output (0 and 1) in Thompson shell. Redirection of stderr (file descriptor 2) also requires an external program wrapper, fd2.[5]

The shell supports globbing,[2] but actually implements it by deferring it to a glob command that replaces the arguments and calls the requested command.[6]

Thompson shell has positional parameters, but no named variables nor access to environmental variables. It understands the creation of background commands with &, similar to Bourne shell. It offers quoting and backslash escapes, though the single quotes work differently from Bourne shell.[2]

Decline and replacements Edit

As a result of the simplistic design, by the 1975 release of Version 6 Unix, it was becoming clear that the Thompson shell was inadequate for most serious programming tasks.

At this time, the developers of the Programmer's Workbench UNIX distribution, most notably John Mashey, began modifying the Thompson shell to make it more suitable for programming.[1] The result, known as the PWB shell or the Mashey shell, included more advanced flow-control mechanisms and introduced shell variables, but remained limited by the necessity to remain compatible with the Thompson shell.

Finally, the Thompson shell was replaced as the main Unix shell by the Bourne shell in Version 7 Unix and the C shell in 2BSD, both released in 1979. Since virtually all modern Unix and Unix-like systems are descended from V7 and 2BSD, the Thompson shell is generally no longer used. It is, however, available as open-source as part of several Ancient Unix source distributions, and has been ported to modern Unices as a historical exhibit.

See also Edit

References Edit

  1. ^ a b c J. R. Mashey (1976-10-13). Using a Command Language as a High-Level Programming Language (PDF). 2nd International Conference on Software Engineering. pp. 169–176.
  2. ^ a b c "tsh(1) (html) - TSH(1) - Manuals - Etsh Project (V6Shell)". etsh.nl.
  3. ^ "if(1) (html) - IF(1) - Manuals - Etsh Project (V6Shell)". etsh.nl.
  4. ^ "goto(1) (html) - GOTO(1) - Manuals - Etsh Project (V6Shell)". etsh.nl.
  5. ^ "fd2(1) (html) - FD2(1) - Manuals - Etsh Project (V6Shell)". etsh.nl.
  6. ^ "glob(1) (html) - GLOB(1) - Manuals - Etsh Project (V6Shell)". etsh.nl.

External links Edit

  • Manual page for the Thompson shell in Unix 1st Edition.
  • The Evolution of the Unix Time-Sharing System - describes the early development of the shell
  • Origins of the Bourne shell - manual pages for the 3rd, 4th, and 6th edition Thompson shells, and other resources on the early shells
  • Etsh (V6Sh) Project - the Thompson shell and its associated utilities ported to modern Unix systems (plus an backwards-compatible "enhanced version" with some modern features)

thompson, shell, first, unix, shell, introduced, first, version, unix, 1971, written, thompson, simple, command, interpreter, designed, scripting, nonetheless, introduced, several, innovative, features, command, line, interface, development, later, unix, shell. The Thompson shell was the first Unix shell introduced in the first version of Unix in 1971 and was written by Ken Thompson 1 It was a simple command interpreter not designed for scripting but nonetheless introduced several innovative features to the command line interface and led to the development of the later Unix shells Thompson shellOriginal author s Ken ThompsonDeveloper s AT amp T Bell LaboratoriesInitial releaseNovember 3 1971 51 years ago 1971 11 03 Operating systemUnix and Unix likeTypeUnix shell Contents 1 History 2 Design 3 Decline and replacements 4 See also 5 References 6 External linksHistory EditThe name shell for a command line interpreter and the concept of making the shell a user program outside of the operating system kernel were introduced in Unix s precursor Multics An early feature of the Thompson shell was a compact syntax for input output redirection In Multics redirecting the input or output of a command required separate commands to start and stop redirection in Unix one could simply add an argument to the command line consisting of the lt symbol followed by a filename for input or the gt symbol for output and the shell would redirect I O for the duration of the command This syntax was already present by the release of the first version of Unix in 1971 A later addition was the concept of pipes At the suggestion of Douglas McIlroy the redirection syntax was expanded so that the output of one command could be passed to the input of another command The original pipe syntax as described in the Version 3 manual was command1 gt command2 gt This syntax proved too ambiguous and was easily confused with redirection to and from files the system cannot tell if command2 is the command command2 or the file command2 By Version 4 the syntax had changed to use both the and symbols to denote pipes command1 command2 This produces exactly the same result as command1 command2 The gt symbol changed into command1 gt file1 This would put the output of command1 into file1 The Thompson shell syntax for redirection with lt and gt and piping with has proven durable and has been adopted by most other Unix shells and command shells of several other operating systems most notably on DOS OS 2 and Microsoft Windows Design EditThe shell s design was intentionally minimalistic even the if and goto statements essential for control of program flow were implemented as separate commands 1 The shell has no facilities for comments besides a builtin command Programmers simply write text after this command which ignores all parameters and simply succeeds Other builtins include chdir exit login newgrp shift and wait 2 The if command combines the uses of modern day Bourne shell test and if The command first looks for an expression which can be similar to modern day test or involve an external command then treats the rest of the command line as the command to execute if the condition turns out true There is no else branch 3 goto is implemented in an interesting way as it is separate from the shell When asked to jump to LABEL it seeks the current command file for a line that says LABEL recall that is simply ignored then exits When the shell tries to read a next line the repositioned file descriptor will direct it to the labelled location 4 There is no redirection of additional file descriptors other than standard input and output 0 and 1 in Thompson shell Redirection of stderr file descriptor 2 also requires an external program wrapper fd2 5 The shell supports globbing 2 but actually implements it by deferring it to a glob command that replaces the arguments and calls the requested command 6 Thompson shell has positional parameters but no named variables nor access to environmental variables It understands the creation of background commands with amp similar to Bourne shell It offers quoting and backslash escapes though the single quotes work differently from Bourne shell 2 Decline and replacements EditAs a result of the simplistic design by the 1975 release of Version 6 Unix it was becoming clear that the Thompson shell was inadequate for most serious programming tasks At this time the developers of the Programmer s Workbench UNIX distribution most notably John Mashey began modifying the Thompson shell to make it more suitable for programming 1 The result known as the PWB shell or the Mashey shell included more advanced flow control mechanisms and introduced shell variables but remained limited by the necessity to remain compatible with the Thompson shell Finally the Thompson shell was replaced as the main Unix shell by the Bourne shell in Version 7 Unix and the C shell in 2BSD both released in 1979 Since virtually all modern Unix and Unix like systems are descended from V7 and 2BSD the Thompson shell is generally no longer used It is however available as open source as part of several Ancient Unix source distributions and has been ported to modern Unices as a historical exhibit See also EditComparison of command shellsReferences Edit a b c J R Mashey 1976 10 13 Using a Command Language as a High Level Programming Language PDF 2nd International Conference on Software Engineering pp 169 176 a b c tsh 1 html TSH 1 Manuals Etsh Project V6Shell etsh nl if 1 html IF 1 Manuals Etsh Project V6Shell etsh nl goto 1 html GOTO 1 Manuals Etsh Project V6Shell etsh nl fd2 1 html FD2 1 Manuals Etsh Project V6Shell etsh nl glob 1 html GLOB 1 Manuals Etsh Project V6Shell etsh nl External links EditManual page for the Thompson shell in Unix 1st Edition The Evolution of the Unix Time Sharing System describes the early development of the shell Origins of the Bourne shell manual pages for the 3rd 4th and 6th edition Thompson shells and other resources on the early shells Etsh V6Sh Project the Thompson shell and its associated utilities ported to modern Unix systems plus an backwards compatible enhanced version with some modern features Retrieved from https en wikipedia org w index php title Thompson shell amp oldid 1159110862, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.