UNIX Shell

{{language |exec=interpreted |tags=bash |hopl id=568 }}The '''UNIX Shell''' is a component of terminal-based [[UNIX]]-derived systems which offers both a command-line interface for running system commands, as well as programming interface for intelligently automating tasks which use system commands.

=Implementation=

There are many UNIX Shells and most of them can be categorized into two families. For purposes of the Rosetta Code, all examples are in Bourne-compatible syntax. The other family of shells, with a markedly different syntax, are ''csh'' ([[:Category:C Shell|C Shell]]) and its ''tcsh'' (Tenex C Shell) "clone." Common Bourne compatible shells include the original [[Bourne Shell]] (''/bin/sh'' on most versions of UNIX), the GNU [[Bourne Again SHell]] (''bash'' --- which is linked to ''/bin/sh'' on many distributions of [[Linux]], making it their default shell), the [[Korn Shell]] (''ksh''), the [[Public Domain Korn SHell]] (''pdksh''), the [[Almquist SHell]] (''ash'') and the [[Debian Almquist SHell]] (''dash'') and the [[Z SHell]] (''zsh'').

''Main article: [[UNIX Shell Implementations]]''

=Language=

While UNIX Shells vary in the programming languages they support, such languages carry a minimum set of features. Each language allows the programmer to [[Execute a System Command|execute system commands]] as though he were typing the commands himself, and each language allows for a header line which specifies which shell implementation is used to interpret the script.

This one tells the operating system to use the [[Bourne Shell]]: #!/bin/sh This line tells the operating system to use the [[Bourne Again SHell]]: #!/bin/bash And this one tells the operating system to use the [[Korn Shell]]: #!/bin/ksh

Each header line consists of a hash, a bang, and the path to the [[interpreter]] binary.

Tasks