   Link: alternate
   Link: license
   Link: canonical

                               Bash (Unix shell)

   From Wikipedia, the free encyclopedia
   Jump to navigation Jump to search

                                      Bash
   Gnu-bash-logo.svg  
   Bash screenshot.png
   Screenshot of a Bash session
   Original author(s) Brian Fox                                               
   Developer(s)       Chet Ramey^[1]^[2]                                      
   Initial release    June 8, 1989; 32 years ago                              
   Link: mw-deduplicated-inline-style
   Stable release     5.1.16^[3] Edit this on Wikidata / 5 January 2022       
   Preview release    5.2-alpha^[4] Edit this on Wikidata / 20 January 2022   
   Repository           * git.savannah.gnu.org/cgit/bash.git Edit this at     
                          Wikidata                                            
   Written in         C                                                       
                        * Unix-like^[5]                                       
   Operating system     * macOS (GPL-2.0-or-later; GPL-3.0-or-later available 
                          through third parties)                              
                        * Windows (GPL-3.0-or-later)^[6]^[7]                  
   Platform           GNU                                                     
   Available in       Multilingual (gettext)                                  
   Type               Unix shell, command language                            
                      Since 4.0: GPL-3.0-or-later^[8]                         
   License            1.11? to 3.2: GPL-2.0-or-later^[9]                      
                      0.99? to 1.05?: GPL-1.0-or-later^[10]^[11]^[12]         
   Website            www.gnu.org/software/bash/                              

   Bash is a Unix shell and command language written by Brian Fox for the GNU
   Project as a free software replacement for the Bourne shell.^[13]^[14]
   First released in 1989,^[15] it has been used as the default login shell
   for most Linux distributions.^[16] A version is also available for Windows
   10 via the Windows Subsystem for Linux.^[17] It is also the default user
   shell in Solaris 11.^[18] Bash was also the default shell in all versions
   of Apple macOS prior to the 2019 release of macOS Catalina, which changed
   the default shell to zsh, although Bash remains available as an
   alternative shell.^[19]

   Bash is a command processor that typically runs in a text window where the
   user types commands that cause actions. Bash can also read and execute
   commands from a file, called a shell script. Like most Unix shells, it
   supports filename globbing (wildcard matching), piping, here documents,
   command substitution, variables, and control structures for
   condition-testing and iteration. The keywords, syntax, dynamically scoped
   variables and other basic features of the language are all copied from sh.
   Other features, e.g., history, are copied from csh and ksh. Bash is a
   POSIX-compliant shell, but with a number of extensions.

   The shell's name is an acronym for Bourne Again Shell, a pun on the name
   of the Bourne shell that it replaces^[20] and the notion of being "born
   again".^[21]^[22]

   A security hole in Bash dating from version 1.03 (August 1989),^[23]
   dubbed Shellshock, was discovered in early September 2014 and quickly led
   to a range of attacks across the Internet.^[24]^[25]^[26] Patches to fix
   the bugs were made available soon after the bugs were identified.

Contents

     * 1 History
     * 2 Features
          * 2.1 Brace expansion
          * 2.2 Startup scripts
               * 2.2.1 Legacy-compatible Bash startup example
               * 2.2.2 Operating system issues in Bash startup
          * 2.3 Portability
          * 2.4 Keyboard shortcuts
          * 2.5 Process management
          * 2.6 Conditional execution
          * 2.7 Bug reporting
          * 2.8 Programmable completion
     * 3 Release history
     * 4 See also
     * 5 References
     * 6 External links

History[edit]

   Brian Fox began coding Bash on January 10, 1988,^[27] after Richard
   Stallman became dissatisfied with the lack of progress being made by a
   prior developer.^[13] Stallman and the Free Software Foundation (FSF)
   considered a free shell that could run existing shell scripts so strategic
   to a completely free system built from BSD and GNU code that this was one
   of the few projects they funded themselves, with Fox undertaking the work
   as an employee of FSF.^[13]^[28] Fox released Bash as a beta, version .99,
   on June 8, 1989,^[15] and remained the primary maintainer until sometime
   between mid-1992^[29] and mid-1994,^[30] when he was laid off from
   FSF^[31] and his responsibility was transitioned to another early
   contributor, Chet Ramey.^[32]^[33]^[34]

   Since then, Bash has become by far the most popular shell among users of
   Linux, becoming the default interactive shell on that operating system's
   various distributions^[35]^[36] (although Almquist shell may be the
   default scripting shell) and on Apple's macOS releases before Catalina in
   October 2019.^[37]^[38]^[16] Bash has also been ported to Microsoft
   Windows and distributed with Cygwin and MinGW, to DOS by the DJGPP
   project, to Novell NetWare, to OpenVMS by the GNV project,^[39] to
   ArcaOS,^[40] and to Android via various terminal emulation applications.

   In September 2014, Stéphane Chazelas, a Unix/Linux specialist,^[41]
   discovered a security bug in the program. The bug, first disclosed on
   September 24, was named Shellshock and assigned the numbers CVE-2014-6271,
   CVE-2014-6277 and CVE-2014-7169. The bug was regarded as severe, since CGI
   scripts using Bash could be vulnerable, enabling arbitrary code execution.
   The bug was related to how Bash passes function definitions to subshells
   through environment variables.^[42]

Features[edit]

   The Bash command syntax is a superset of the Bourne shell command syntax.
   Bash supports brace expansion, command line completion (Programmable
   Completion),^[43] basic debugging^[44] and signal handling (using trap)
   since bash 2.05a^[45] among other features. Bash can execute the vast
   majority of Bourne shell scripts without modification, with the exception
   of Bourne shell scripts stumbling into fringe syntax behavior interpreted
   differently in Bash or attempting to run a system command matching a newer
   Bash builtin, etc. Bash command syntax includes ideas drawn from the
   KornShell (ksh) and the C shell (csh) such as command line editing,
   command history (history command),^[46] the directory stack, the $RANDOM
   and $PPID variables, and POSIX command substitution syntax $(…).

   When a user presses the tab key within an interactive command-shell, Bash
   automatically uses command line completion, since beta version 2.04,^[47]
   to match partly typed program names, filenames and variable names. The
   Bash command-line completion system is very flexible and customizable, and
   is often packaged with functions that complete arguments and filenames for
   specific programs and tasks.

   Bash's syntax has many extensions lacking in the Bourne shell. Bash can
   perform integer calculations ("arithmetic evaluation") without spawning
   external processes. It uses the ((…)) command and the $((…)) variable
   syntax for this purpose. Its syntax simplifies I/O redirection. For
   example, it can redirect standard output (stdout) and standard error
   (stderr) at the same time using the &> operator. This is simpler to type
   than the Bourne shell equivalent 'command > file 2>&1'. Bash supports
   process substitution using the <(command) and >(command)syntax, which
   substitutes the output of (or input to) a command where a filename is
   normally used. (This is implemented through /proc/fd/ unnamed pipes on
   systems that support that, or via temporary named pipes where necessary).

   When using the 'function' keyword, Bash function declarations are not
   compatible with Bourne/Korn/POSIX scripts (the KornShell has the same
   problem when using 'function'), but Bash accepts the same function
   declaration syntax as the Bourne and Korn shells, and is POSIX-conformant.
   Because of these and other differences, Bash shell scripts are rarely
   runnable under the Bourne or Korn shell interpreters unless deliberately
   written with that compatibility in mind, which is becoming less common as
   Linux becomes more widespread. But in POSIX mode, Bash conforms with POSIX
   more closely.^[48]

   Bash supports here documents. Since version 2.05b Bash can redirect
   standard input (stdin) from a "here string" using the <<< operator.

   Bash 3.0 supports in-process regular expression matching using a syntax
   reminiscent of Perl.^[49]

   In February 2009,^[50] Bash 4.0 introduced support for associative
   arrays.^[11] Associative array indices are strings, in a manner similar to
   AWK or Tcl.^[51] They can be used to emulate multidimensional arrays. Bash
   4 also switches its license to GPL-3.0-or-later; some users suspect this
   licensing change is why MacOS continues to use older versions.^[52] Apple
   finally stopped using Bash in their operating systems with the release of
   MacOS Catalina in 2019.^[19]

  Brace expansion[edit]

   Brace expansion, also called alternation, is a feature copied from the C
   shell. It generates a set of alternative combinations. Generated results
   need not exist as files. The results of each expanded string are not
   sorted and left to right order is preserved:

 $ echo a{p,c,d,b}e
 ape ace ade abe
 $ echo {a,b,c}{d,e,f}
 ad ae af bd be bf cd ce cf

   Users should not use brace expansions in portable shell scripts, because
   the Bourne shell does not produce the same output.

 $ # A traditional shell does not produce the same output
 $ /bin/sh -c 'echo a{p,c,d,b}e'
 a{p,c,d,b}e

   When brace expansion is combined with wildcards, the braces are expanded
   first, and then the resulting wildcards are substituted normally. Hence, a
   listing of JPEG and PNG images in the current directory could be obtained
   using:

 ls *.{jpg,jpeg,png}    # expands to *.jpg *.jpeg *.png - after which,
                        # the wildcards are processed
 echo *.{png,jp{e,}g}   # echo just show the expansions -
                        # and braces in braces are possible.

   In addition to alternation, brace expansion can be used for sequential
   ranges between two integers or characters separated by double dots. Newer
   versions of Bash allow a third integer to specify the increment.

 $ echo {1..10}
 1 2 3 4 5 6 7 8 9 10
 $ echo file{1..4}.txt
 file1.txt file2.txt file3.txt file4.txt
 $ echo {a..e}
 a b c d e
 $ echo {1..10..3}
 1 4 7 10
 $ echo {a..j..3}
 a d g j

   When brace expansion is combined with variable expansion (A.K.A. parameter
   expansion and parameter substitution) the variable expansion is performed
   after the brace expansion, which in some cases may necessitate the use of
   the eval built-in, thus:

 $ start=1; end=10
 $ echo {$start..$end}  # fails to expand due to the evaluation order
 {1..10}
 $ eval echo {$start..$end} # variable expansion occurs then resulting string is evaluated
 1 2 3 4 5 6 7 8 9 10

  Startup scripts[edit]

    This section contains instructions, advice, or how-to content. The        
    purpose of Wikipedia is to present facts, not to train. Please help       
    improve this article either by rewriting the how-to content or by moving  
    it to Wikiversity, Wikibooks or Wikivoyage. (January 2019)                

   When Bash starts, it executes the commands in a variety of dot files.
   Unlike Bash shell scripts, dot files do not typically have execute
   permission enabled nor an interpreter directive like #!/bin/bash.

    Legacy-compatible Bash startup example[edit]

   The skeleton ~/.bash_profile below is compatible with the Bourne shell and
   gives semantics similar to csh for the ~/.bashrc and ~/.bash_login. The [
   -r filename ] && cmd is a short-circuit evaluation that tests if filename
   exists and is readable, skipping the part after the && if it is not.

 [ -r ~/.profile ] && . ~/.profile             # set up environment, once, Bourne-sh syntax only
 if [ -n "$PS1" ] ; then                       # are we interactive?
    [ -r ~/.bashrc     ] && . ~/.bashrc        # tty/prompt/function setup for interactive shells
    [ -r ~/.bash_login ] && . ~/.bash_login    # any at-login tasks for login shell only
 fi                                            # End of "if" block

    Operating system issues in Bash startup[edit]

   Some versions of Unix and Linux contain Bash system startup scripts,
   generally under the /etc directories. Bash calls these as part of its
   standard initialization, but other startup files can read them in a
   different order than the documented Bash startup sequence. The default
   content of the root user's files may also have issues, as well as the
   skeleton files the system provides to new user accounts upon setup. The
   startup scripts that launch the X window system may also do surprising
   things with the user's Bash startup scripts in an attempt to set up
   user-environment variables before launching the window manager. These
   issues can often be addressed using a ~/.xsession or ~/.xprofile file to
   read the ~/.profile — which provides the environment variables that Bash
   shell windows spawned from the window manager need, such as xterm or Gnome
   Terminal.

  Portability[edit]

   Invoking Bash with the --posix option or stating set -o posix in a script
   causes Bash to conform very closely to the POSIX 1003.2 standard.^[53]
   Bash shell scripts intended for portability should take into account at
   least the POSIX shell standard. Some bash features not found in POSIX
   are:^[53]^[54]

     * Certain extended invocation options
     * Brace expansion
     * Arrays and associative arrays
     * The double bracket [[ ... ]] extended test construct and its regex
       matching
     * The double-parentheses arithmetic-evaluation construct (only (( ...
       )); $(( ... )) is POSIX)
     * Certain string-manipulation operations in parameter expansion
     * local for scoped variables
     * Process substitution
     * Bash-specific builtins
     * Coprocesses
     * $EPOCHSECONDS and $EPOCHREALTIME variables ^[55]

   If a piece of code uses such a feature, it is called a "bashism" – a
   problem for portable use. Debian's checkbashisms and Vidar Holen's
   shellcheck can be used to make sure that a script does not contain these
   parts.^[56]^[57] The list varies depending on the actual target shell:
   Debian's policy allows some extensions in their scripts (as they are in
   the dash shell),^[54] while a script intending to support pre-POSIX Bourne
   shells, like autoconf's configure, are even more limited in the features
   they can use.^[58]

  Keyboard shortcuts[edit]

   Main article: GNU Readline

   Bash uses readline to provide keyboard shortcuts for command line editing
   using the default (Emacs) key bindings. Vi-bindings can be enabled by
   running set -o vi.^[59]

  Process management[edit]

   The Bash shell has two modes of execution for commands: batch, and
   concurrent mode.

   To execute commands in batch (i.e., in sequence) they must be separated by
   the character ";", or on separate lines:

 command1; command2

   in this example, when command1 is finished, command2 is executed.

   A background execution of command1 can occur using (symbol &) at the end
   of an execution command, and process will be executed in background
   returning immediately control to the shell and allowing continued
   execution of commands.

 command1 &

   Or to have a concurrent execution of two command1 and command2, they must
   be executed in the Bash shell in the following way:

 command1 & command2

   In this case command1 is executed in the background & symbol, returning
   immediately control to the shell that executes command2 in the foreground.

   A process can be stopped and control returned to bash by typing Ctrl+z
   while the process is running in the foreground.^[60]

   A list of all processes, both in the background and stopped, can be
   achieved by running jobs:

 $ jobs
 [1]-  Running                  command1 &
 [2]+  Stopped                  command2

   In the output, the number in brackets refers to the job id. The plus sign
   signifies the default process for bg and fg. The text "Running" and
   "Stopped" refer to the Process state. The last string is the command that
   started the process.

   The state of a process can be changed using various commands. The fg
   command brings a process to the foreground, while bg sets a stopped
   process running in the background. bg and fg can take a job id as their
   first argument, to specify the process to act on. Without one, they use
   the default process, identified by a plus sign in the output of jobs. The
   kill command can be used to end a process prematurely, by sending it a
   signal. The job id must be specified after a percent sign:

 kill %1

  Conditional execution[edit]

   Bash supplies "conditional execution" command separators that make
   execution of a command contingent on the exit code set by a precedent
   command. For example:

 cd "$SOMEWHERE" && ./do_something || echo "An error occurred" >&2

   Where ./do_something is only executed if the cd (change directory) command
   was "successful" (returned an exit status of zero) and the echo command
   would only be executed if either the cd or the ./do_something command
   return an "error" (non-zero exit status).

   For all commands the exit status is stored in the special variable $?.
   Bash also supports if ...;then ...;else ...;fi and case $VARIABLE in
   $pattern)...;;$other_pattern)...;; esac forms of conditional command
   evaluation.

  Bug reporting[edit]

   Link: mw-deduplicated-inline-style
   "bashbug" redirects here. For the widely reported September 2014 bug found
   in Bash, see Shellshock (software bug).

   An external command called bashbug reports Bash shell bugs. When the
   command is invoked, it brings up the user's default editor with a form to
   fill in. The form is mailed to the Bash maintainers (or optionally to
   other email addresses).^[61]^[62]

  Programmable completion[edit]

   Bash supports programmable completion via built-in complete, compopt, and
   compgen commands.^[63] The feature has been available since the beta
   version of 2.04 released in 2000.^[64]^[65] These commands enable complex
   and intelligent completion specification for commands (i.e. installed
   programs), functions, variables, and filenames.^[66]

   The complete and compopt two commands specify how arguments of some
   available commands or options are going to be listed in the readline
   input. As of version 5.1 completion of the command or the option is
   usually activated by the
   Link: mw-deduplicated-inline-style
   Tab ↹ keystroke after typing its name.^[66]

Release history[edit]

   Version        Release date Release notes                     
   bash-5.1       2020-12-07   github version history NEWS ^[11] 
   bash-5.0       2019-01-07   ^[67]^[68]^[69]                   
   bash-5.0-rc1   2018-12-20   
   bash-5.0-beta2 2018-11-28   
   bash-5.0-beta  2018-09-17   
   bash-5.0-alpha 2018-05-22   
   bash-4.4       2016-09-15   github version history NEWS v4.4  
   bash-4.4-rc2   2016-08-22   
   bash-4.4-rc1   2016-02-24   
   bash-4.4-beta2 2016-07-11   
   bash-4.4-beta  2015-10-12   
   bash-4.3       2014-02-26   
   bash-4.2       2011-02-13   
   bash-4.1       2009-12-31   
   bash-4.0       2009-02-20   
   bash-4.0-rc1   2009-01-12   
   bash-3.2       2006-10-11   
   bash-3.1       2005-12-08   
   bash-3.0       2004-08-03   
   bash-2.05b     2002-07-17   
   bash-2.05a     2001-11-16   
   bash-2.05      2001-04-09   
   bash-2.04      2000-03-21   
   bash-2.03      1999-02-19   
   bash-2.02      1998-04-18   
   bash-2.01      1997-06-05   
   bash-2.0       1996-12-31   

See also[edit]

     * Free and open-source software portal
     * Comparison of command shells

References[edit]

    1. ^
       Link: mw-deduplicated-inline-style
       Hamilton, Naomi (May 30, 2008). "The A-Z of Programming Languages:
       BASH/Bourne-Again Shell". Computerworld. Archived from the original on
       November 8, 2016. Retrieved March 1, 2022.
    2. ^
       Link: mw-deduplicated-inline-style
       Ramey, Chet (April 20, 2021). "The GNU Bourne-Again Shell". Technology
       Infrastructure Services. Case Western Reserve University. Retrieved
       March 1, 2022.
    3. ^
       Link: mw-deduplicated-inline-style
       "Bash-5.1 Official Patch 16". Retrieved February 4, 2022.
    4. ^
       Link: mw-deduplicated-inline-style
       Chet Ramey (January 21, 2022). "Bash-5.2-alpha available". Retrieved
       February 2, 2022.
    5. ^
       Link: mw-deduplicated-inline-style
       "Bash FAQ, version 4.14". Archived from the original on September 1,
       2018. Retrieved April 9, 2016.
    6. ^
       Link: mw-deduplicated-inline-style
       "Missing source code - GPL compliance? · Issue #107 · Microsoft/WSL".
       GitHub. Archived from the original on September 24, 2019. Retrieved
       July 8, 2016.
    7. ^
       Link: mw-deduplicated-inline-style
       "GNU Bash". Softpedia. SoftNews. January 23, 2010. Archived from the
       original on October 21, 2017. Retrieved April 9, 2016.
    8. ^
       Link: mw-deduplicated-inline-style
       GNU Project. "README file". Archived from the original on April 26,
       2019. Retrieved April 16, 2014. Bash is free software, distributed
       under the terms of the [GNU] General Public License as published by
       the Free Software Foundation, version 3 of the License (or any later
       version).
    9. ^
       Link: mw-deduplicated-inline-style
       "bash-1.11". oldlinux.org. See test.c for GPL-2.0-or-later
   10. ^
       Link: mw-deduplicated-inline-style
       "bash-1.05.tar". oldlinux.org.
   11. ^ ^a ^b ^c
       Link: mw-deduplicated-inline-style
       "BashFAQ/061 - Greg's Wiki". mywiki.wooledge.org. Archived from the
       original on March 2, 2021. Retrieved March 1, 2021.
   12. ^
       Link: mw-deduplicated-inline-style
       "Is there a way to download the presumably initial bash source
       bash-0.99?". unix.stackexchange.com.
   13. ^ ^a ^b ^c
       Link: mw-deduplicated-inline-style
       Richard Stallman (forwarded with comments by Chet Ramey) (February 10,
       1988). "GNU + BSD = ?". Newsgroup: comp.unix.questions.
       Usenet: 2362@mandrill.CWRU.Edu. Archived from the original on December
       28, 2021. Retrieved December 28, 2021. For a year and a half, the GNU
       shell was "just about done". The author made repeated promises to
       deliver what he had done, and never kept them. Finally I could no
       longer believe he would ever deliver anything. So Foundation staff
       member Brian Fox is now implementing an imitation of the Bourne shell.
   14. ^
       Link: mw-deduplicated-inline-style
       Hamilton, Naomi (May 30, 2008), "The A-Z of Programming Languages:
       BASH/Bourne-Again Shell", Computerworld: 2, archived from the original
       on July 6, 2011, retrieved March 21, 2011, When Richard Stallman
       decided to create a full replacement for the then-encumbered Unix
       systems, he knew that he would eventually have to have replacements
       for all of the common utilities, especially the standard shell, and
       those replacements would have to have acceptable licensing.
   15. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       Brian Fox (forwarded by Leonard H. Tower Jr.) (June 8, 1989). "Bash is
       in beta release!". Newsgroup: gnu.announce. Archived from the original
       on May 4, 2013. Retrieved October 28, 2010.
   16. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       Warren, Tom (June 4, 2019). "Apple replaces bash with zsh as the
       default shell in macOS Catalina". The Verge. Archived from the
       original on June 10, 2019. Retrieved June 13, 2019.
   17. ^
       Link: mw-deduplicated-inline-style
       "How to install Bash shell command-line tool on Windows 10". September
       28, 2016. Archived from the original on November 20, 2016. Retrieved
       November 20, 2016.
   18. ^
       Link: mw-deduplicated-inline-style
       "User Environment Feature Changes". Oracle. Archived from the original
       on June 12, 2018. Retrieved June 8, 2018.
   19. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       Hughes, Matthew (June 4, 2019). "Why does macOS Catalina use Zsh
       instead of Bash? Licensing". The Next Web. Archived from the original
       on December 31, 2020. Retrieved January 12, 2021.
   20. ^
       Link: mw-deduplicated-inline-style
       "I Almost Get a Linux Editor and Compiler". Dr. Dobb's. Archived from
       the original on March 2, 2021. Retrieved September 12, 2020.
   21. ^
       Link: mw-deduplicated-inline-style
       Richard Stallman (November 12, 2010). "About the GNU Project". Free
       Software Foundation. Archived from the original on April 24, 2011.
       Retrieved March 13, 2011. "Bourne Again Shell" is a play on the name
       Bourne Shell, which was the usual shell on Unix.
   22. ^
       Link: mw-deduplicated-inline-style
       Gattol, Markus (March 13, 2011), Bourne-again Shell, archived from the
       original on March 9, 2011, retrieved March 13, 2011, The name is a pun
       on the name of the Bourne shell (sh), an early and important Unix
       shell written by Stephen Bourne and distributed with Version 7 Unix
       circa 1978, and the concept of being "born again".
   23. ^
       Link: mw-deduplicated-inline-style
       Chazelas, Stephane (October 4, 2014). "oss-sec mailing list archives".
       Seclists.org. Archived from the original on October 6, 2014. Retrieved
       October 4, 2014.
   24. ^
       Link: mw-deduplicated-inline-style
       Leyden, John (September 24, 2014). "Patch Bash NOW: 'Shell Shock' bug
       blasts OS X, Linux systems wide open". The Register. Archived from the
       original on October 16, 2014. Retrieved September 25, 2014.
   25. ^
       Link: mw-deduplicated-inline-style
       Perlroth, Nicole (September 25, 2014). "Security Experts Expect
       'Shellshock' Software Bug in Bash to Be Significant". The New York
       Times. Archived from the original on April 5, 2019. Retrieved
       September 25, 2014.
   26. ^
       Link: mw-deduplicated-inline-style
       Seltzer, Larry (September 29, 2014). "Shellshock makes Heartbleed look
       insignificant". ZDNet. Archived from the original on May 14, 2016.
   27. ^
       Link: mw-deduplicated-inline-style
       Brian Fox (August 29, 1996), shell.c, Free Software Foundation,
       archived from the original on September 28, 2018, retrieved November
       1, 2010, Birthdate: Sunday, January 10th, 1988. Initial author: Brian
       Fox
   28. ^
       Link: mw-deduplicated-inline-style
       Richard Stallman (October 3, 2010). "About the GNU Project". Free
       Software Foundation. Archived from the original on April 24, 2011.
       Retrieved March 21, 2011. Free Software Foundation employees have
       written and maintained a number of GNU software packages. Two notable
       ones are the C library and the shell. … We funded development of these
       programs because the GNU Project was not just about tools or a
       development environment. Our goal was a complete operating system, and
       these programs were needed for that goal.
   29. ^
       Link: mw-deduplicated-inline-style
       len (g...@prep.ai.mit.edu) (April 20, 1993). "January 1993 GNU's
       Bulletin". Newsgroup: gnu.announce.
       Usenet: gnusenet930421bulletin@prep.ai.mit.edu. Archived from the
       original on March 2, 2021. Retrieved October 28, 2010.
   30. ^
       Link: mw-deduplicated-inline-style
       Ramey, Chet (August 1, 1994). "Bash - the GNU shell (Reflections and
       Lessons Learned)". Linux Journal. Archived from the original on
       December 5, 2008. Retrieved November 13, 2008.
   31. ^
       Link: mw-deduplicated-inline-style
       Chet Ramey (October 31, 2010), Dates in your Computerworld interview,
       archived from the original on July 20, 2012, retrieved October 31,
       2010
   32. ^
       Link: mw-deduplicated-inline-style
       Chet Ramey (June 12, 1989). "Bash 0.99 fixes & improvements".
       Newsgroup: gnu.bash.bug. Archived from the original on November 10,
       2012. Retrieved November 1, 2010.
   33. ^
       Link: mw-deduplicated-inline-style
       Chet Ramey (July 24, 1989). "Some bash-1.02 fixes".
       Newsgroup: gnu.bash.bug. Archived from the original on November 10,
       2012. Retrieved October 30, 2010.
   34. ^
       Link: mw-deduplicated-inline-style
       Brian Fox (March 2, 1990). "Availability of bash 1.05".
       Newsgroup: gnu.bash.bug. Archived from the original on November 10,
       2012. Retrieved October 30, 2010.
   35. ^
       Link: mw-deduplicated-inline-style
       Bresnahan, Christine; Blum, Richard (April 2015). CompTIA Linux+
       Powered by Linux Professional Institute Study Guide: Exam LX0-103 and
       Exam LX0-104 (3rd ed.). John Wiley & Sons, Inc. p. 5.
       ISBN 978-1-119-02122-3. Archived from the original on March 2, 2021.
       Retrieved June 6, 2016. In Linux, most users run bash because it is
       the most popular shell.
   36. ^
       Link: mw-deduplicated-inline-style
       Danesh, Arman; Jang, Michael (February 2006). Mastering Linux. John
       Wiley & Sons, Inc. p. 363. ISBN 978-0-7821-5277-7. Archived from the
       original on March 2, 2021. Retrieved June 6, 2016. The Bourne Again
       Shell (bash) is the most common shell installed with Linux
       distributions.
   37. ^
       Link: mw-deduplicated-inline-style
       Foster-Johnson, Eric; Welch, John C.; Anderson, Micah (April 2005).
       Beginning Shell Scripting. John Wiley & Sons, Inc. p. 6.
       ISBN 978-0-7645-9791-6. Archived from the original on March 2, 2021.
       Retrieved June 6, 2016. Bash is by far the most popular shell and
       forms the default shell on Linux and Mac OSX systems.
   38. ^
       Link: mw-deduplicated-inline-style
       "Use zsh as the default shell on your Mac - Apple Support". Archived
       from the original on December 2, 2019. Retrieved July 1, 2019.
   39. ^
       Link: mw-deduplicated-inline-style
       "Installing the new GNV packages". Archived from the original on
       October 3, 2020. Retrieved September 4, 2020.
   40. ^
       Link: mw-deduplicated-inline-style
       "Compatibility Subsystems". Archived from the original on September
       23, 2020. Retrieved September 4, 2020.
   41. ^
       Link: mw-deduplicated-inline-style
       Juliana, Cino (June 10, 2017). "Linux bash exit status and how to set
       exit status in bash - Techolac". Archived from the original on June
       21, 2019. Retrieved June 21, 2019.
   42. ^
       Link: mw-deduplicated-inline-style
       Huzaifa Sidhpurwala (September 24, 2014). "Bash specially-crafted
       environment variables code injection attack". Red Hat. Archived from
       the original on September 25, 2014. Retrieved September 25, 2014.
   43. ^
       Link: mw-deduplicated-inline-style
       "Bash Reference Manual". www.gnu.org. Archived from the original on
       March 15, 2018. Retrieved March 27, 2018.
   44. ^
       Link: mw-deduplicated-inline-style
       "Debugging Bash scripts". tldp.org. Archived from the original on
       November 4, 2018. Retrieved November 20, 2018.
   45. ^
       Link: mw-deduplicated-inline-style
       "Bash changes [Bash Hackers Wiki (DEV 20200708T2203)]".
       wiki-dev.bash-hackers.org. Archived from the original on September 23,
       2019. Retrieved September 23, 2019.
   46. ^
       Link: mw-deduplicated-inline-style
       "Bash Reference Manual". www.gnu.org. Archived from the original on
       September 15, 2019. Retrieved September 15, 2019.
   47. ^
       Link: mw-deduplicated-inline-style
       "Working more productively with bash 2.x/3.x". www.caliban.org.
       Archived from the original on June 29, 2018. Retrieved June 21, 2018.
   48. ^
       Link: mw-deduplicated-inline-style
       "6.11 Bash POSIX Mode", The GNU Bash Reference Manual, for Bash,
       Version 4.1, December 23, 2009, archived from the original on December
       3, 2010, retrieved October 26, 2010
   49. ^
       Link: mw-deduplicated-inline-style
       "Advanced Bash-Scripting Guide". www.tldp.org. Section 37.2 (Bash,
       version 3). Archived from the original on May 5, 2017. Retrieved March
       5, 2017.
   50. ^
       Link: mw-deduplicated-inline-style
       "Bash, version 4". tldp.org. Archived from the original on July 1,
       2018. Retrieved June 25, 2018.
   51. ^
       Link: mw-deduplicated-inline-style
       "Arrays (Bash Reference Manual)". www.gnu.org. Archived from the
       original on July 11, 2018. Retrieved July 4, 2018.
   52. ^
       Link: mw-deduplicated-inline-style
       "macos - Update bash to version 4.0 on OSX". Ask Different. Archived
       from the original on June 25, 2018. Retrieved June 25, 2018.
   53. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       Mendel Cooper. "Portability Issues". The Linux Documentation Project.
       ibiblio.org. Archived from the original on January 27, 2012. Retrieved
       January 26, 2012.
   54. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       "10. Files". Debian Policy Manual v4.5.0.2. Archived from the original
       on May 12, 2020. Retrieved May 11, 2020.
   55. ^
       Link: mw-deduplicated-inline-style
       "How To Format Date And Time In Linux, MacOS, And Bash?". Shell Tips!.
       Archived from the original on June 3, 2020. Retrieved June 3, 2020.
   56. ^ checkbashisms(1) – Linux General Commands Manual
   57. ^ shellcheck(1) – Linux General Commands Manual
   58. ^
       Link: mw-deduplicated-inline-style
       "Portable Shell". Autoconf. Archived from the original on March 2,
       2021. Retrieved January 20, 2020.
   59. ^
       Link: mw-deduplicated-inline-style
       "BASH Help - A Bash Tutorial". Hypexr.org. October 5, 2012. Archived
       from the original on March 2, 2021. Retrieved July 21, 2013.
   60. ^
       Link: mw-deduplicated-inline-style
       "Bash Reference Manual". www.gnu.org. Archived from the original on
       March 15, 2018. Retrieved March 27, 2018.
   61. ^ bashbug(1) Archived October 2, 2018, at the Wayback Machine, die.net
   62. ^ "Linux / Unix Command: bashbug" Archived October 6, 2014, at the
       Wayback Machine, apple.com
   63. ^
       Link: mw-deduplicated-inline-style
       "Bash Reference Manual". tiswww.case.edu.
   64. ^
       Link: mw-deduplicated-inline-style
       "Working more productively with bash 2.x/3.x". www.caliban.org.
       Archived from the original on June 29, 2018. Retrieved June 21, 2018.
   65. ^
       Link: mw-deduplicated-inline-style
       "Index of /gnu/bash". ftp.swin.edu.au. Archived from the original on
       March 8, 2020. Retrieved September 15, 2019.
   66. ^ ^a ^b
       Link: mw-deduplicated-inline-style
       "An Introduction to Programmable Completion". tldp.org. Retrieved
       January 21, 2022.
   67. ^
       Link: mw-deduplicated-inline-style
       "github version history NEWS v5.0". GitHub. Archived from the original
       on September 10, 2020. Retrieved March 1, 2021.
   68. ^
       Link: mw-deduplicated-inline-style
       "Bash changes [Bash Hackers Wiki]". Archived from the original on
       March 18, 2020. Retrieved November 25, 2019.
   69. ^
       Link: mw-deduplicated-inline-style
       "Bash-5.0 release available". lists.gnu.org. Archived from the
       original on November 8, 2020. Retrieved March 1, 2021.

External links[edit]

    Wikimedia Commons has media related to Bash. 

    Wikibooks has a book on the topic of: Bash Shell Scripting 

     * Official website
     * Link: mw-deduplicated-inline-style
       Hamilton, Naomi (May 30, 2008). "The A-Z of Programming Languages:
       BASH/Bourne-Again Shell". Computerworld. Archived from the original on
       November 8, 2016. (interview with GNU Bash's maintainer, Chet Ramey)

     * v        
     * t        
     * e        
   GNU Project  
                  * GNU Manifesto                                     
                  * Free Software Foundation                          
   History             * Europe                                       
                       * India                                        
                       * Latin America                                
                  * History of free software                          
                  * GNU General Public License                        
                       * linking exception                            
   Licenses            * font exception                               
                  * GNU Lesser General Public License                 
                  * GNU Affero General Public License                 
                  * GNU Free Documentation License                    
                  * GNU (variants)                                    
                  * Hurd                                              
                  * Linux-libre                                       
                  * glibc                                             
                  * Bash                                              
                  * coreutils                                         
                  * findutils                                         
                  * Build System                                      
                  * GCC                                               
                  * binutils                                          
                  * GDB                                               
                  * GRUB                                              
                  * GNUstep                                           
                  * GIMP                                              
                  * Jami                                              
                  * GNU Emacs                                         
                  * GNU TeXmacs                                       
   Software       * GNU Octave                                        
                  * GNU Taler                                         
                  * GNU R                                             
                  * GSL                                               
                  * GMP                                               
                  * GNU Electric                                      
                  * GNU Archimedes                                    
                  * GNUnet                                            
                  * GNU Privacy Guard                                 
                  * Gnuzilla (IceCat)                                 
                  * GNU Health                                        
                  * GNUmed                                            
                  * GNU LilyPond                                      
                  * GNU Go                                            
                  * GNU Chess                                         
                  * Gnash                                             
                  * Guix                                              
                  * more...                                           
                  * Alexandre Oliva                                   
                  * Benjamin Mako Hill                                
                  * Bradley M. Kuhn                                   
                  * Brian Fox                                         
                  * Federico Heinz                                    
                  * Frédéric Couchet                                  
                  * Georg C. F. Greve                                 
   Contributors   * John Sullivan                                     
                  * José E. Marchesi                                  
                  * Joshua Gay                                        
                  * Kefah T. Issa                                     
                  * Loïc Dachary                                      
                  * Nagarjuna G.                                      
                  * Peter Heath                                       
                  * Richard M. Stallman                               
                  * GNU/Linux naming controversy                      
   Other topics   * Revolution OS                                     
                  * Free Software Foundation anti-Windows campaigns   
                  * Defective by Design                               

   Link: mw-deduplicated-inline-style

   Link: mw-deduplicated-inline-style
     * v             
     * t             
     * e             
   Unix shells       
     * Almquist      
     * Bash          
     * Bourne        
     * csh           
     * fish          
     * Hamilton      
     * Korn          
     * PowerShell    
     * PWB           
     * Qshell        
     * rc            
     * sash          
     * tcsh          
     * Thompson      
     * Wish          
     * Zsh           
     * Comparison of command shells

   Link: mw-deduplicated-inline-style

   Link: mw-deduplicated-inline-style
     * v             
     * t             
     * e             
   Programming languages
     * Comparison    
     * Timeline      
     * History       
     * Ada           
     * ALGOL         
     * APL           
     * Assembly      
     * BASIC         
     * C             
     * C++           
     * C#            
     * COBOL         
     * Erlang        
     * Forth         
     * Fortran       
     * Go            
     * Haskell       
     * Java          
     * JavaScript    
     * Kotlin        
     * Lisp          
     * Lua           
     * ML            
     * Pascal        
     * Perl          
     * PHP           
     * Prolog        
     * Python        
     * R             
     * Ruby          
     * Rust          
     * SQL           
     * Shell         
     * Simula        
     * Smalltalk     
     * Swift         
     * more...       
     * Category      
     * Lists: Alphabetical
     * Categorical   
     * Generational  
     * Non-English-based

   Link: mw-deduplicated-inline-style

   Authority control Edit this at Wikidata
   National libraries    * France (data)   
                         * Germany         
   Other                 * SUDOC (France)  
                              * 1          

   Retrieved from
   "https://en.wikipedia.org/w/index.php?title=Bash_(Unix_shell)&oldid=1081593937"
   Categories:
     * Unix shells
     * 1989 software
     * Cross-platform free software
     * Domain-specific programming languages
     * Free software programmed in C
     * GNU Project software
     * Scripting languages
     * Text-oriented programming languages
   Hidden categories:
     * Webarchive template wayback links
     * Articles with short description
     * Short description is different from Wikidata
     * Use mdy dates from March 2014
     * Articles needing cleanup from January 2019
     * All pages needing cleanup
     * Articles containing how-to sections
     * Commons category link is on Wikidata
     * Articles with BNF identifiers
     * Articles with GND identifiers
     * Articles with SUDOC identifiers

Navigation menu

   Personal tools
     * Not logged in
     * Talk
     * Contributions
     * Create account
     * Log in
   Namespaces
     * Article
     * Talk
   [ ] English
   Views
     * Read
     * Edit
     * View history
   [ ] More

  Search

   _____________________ [ Search ] [ Go ]
   Visit the main page
   Navigation
     * Main page
     * Contents
     * Current events
     * Random article
     * About Wikipedia
     * Contact us
     * Donate
   Contribute
     * Help
     * Learn to edit
     * Community portal
     * Recent changes
     * Upload file
   Tools
     * What links here
     * Related changes
     * Upload file
     * Special pages
     * Permanent link
     * Page information
     * Cite this page
     * Wikidata item
   Print/export
     * Download as PDF
     * Printable version
   In other projects
     * Wikimedia Commons
     * Wikibooks
     * Wikiversity
   Languages
     * العربية
     * Azərbaycanca
     * বাংলা
     * Български
     * Bosanski
     * Català
     * Čeština
     * Dansk
     * Deutsch
     * Eesti
     * Ελληνικά
     * Español
     * Esperanto
     * Euskara
     * فارسی
     * Français
     * Galego
     * 한국어
     * Hrvatski
     * Bahasa Indonesia
     * Íslenska
     * Italiano
     * עברית
     * Magyar
     * മലയാളം
     * Bahasa Melayu
     * Nederlands
     * 日本語
     * Norsk bokmål
     * Polski
     * Português
     * Română
     * Русский
     * Slovenčina
     * Српски / srpski
     * Srpskohrvatski / српскохрватски
     * Suomi
     * Svenska
     * ไทย
     * Türkçe
     * Українська
     * Tiếng Việt
     * 中文
   Edit links
     * This page was last edited on 8 April 2022, at 12:02 (UTC).
     * Text is available under the Creative Commons Attribution-ShareAlike
       License 3.0; additional terms may apply. By using this site, you agree
       to the Terms of Use and Privacy Policy. Wikipedia® is a registered
       trademark of the Wikimedia Foundation, Inc., a non-profit
       organization.
     * Privacy policy
     * About Wikipedia
     * Disclaimers
     * Contact Wikipedia
     * Mobile view
     * Developers
     * Statistics
     * Cookie statement
     * Wikimedia Foundation
     * Powered by MediaWiki
