Bash(유닉스 셸)

Bash (Unix shell)
배쉬
Gnu-bash-logo.svg
Bash screenshot.png
Bash 세션 스크린샷
원저작자브라이언 폭스
개발자쳇 레이미[1][2]
초기 릴리즈1989년 6월 8일, 33년 전(1989-06-08)
안정된 릴리스
5.1.16[3] / 2022년 1월 5일
프리뷰 릴리즈
5.2-alpha[4] / 2022년 1월 20일
저장소
기입처C
운영 체제
플랫폼GNU
이용가능기간:다국어(gettext)
유형Unix 쉘, 명령어 언어
면허증.4.0 이후: GPL-3.0 이후[8]
1.11? ~ 3.2: GPL-2.0 이후[9]
0.99?~1.05? :GPL-1.0 이후[10][11][12]
웹 사이트www.gnu.org/software/bash/

BashBourne [13][14]쉘을 대체하는 무료 소프트웨어로서 Brian Fox가 GNU 프로젝트를 위해 작성Unix 쉘 및 명령어 언어입니다.1989년에 [15]처음 출시된 이 제품은 대부분의 Linux [16]디스트리뷰션에서 기본 로그인 셸로 사용되고 있습니다.Bash는 Linus [17]Torvalds가 GCC와 함께 Linux로 포팅한 최초의 프로그램 중 하나입니다.Windows 10 에서는,[18] Linux 용 Windows 서브 시스템을 개입시켜 버전도 사용할 수 있습니다.Solaris [19]11에서는 기본 사용자 셸이기도 합니다.또한 Bash는 2019년 macOS Catalina 출시 이전 모든 버전의 Apple macOS에서 기본 셸이었습니다. 기본 셸은 zsh로 변경되었지만 Bash는 여전히 [20]대체 셸로 사용할 수 있습니다.

Bash는 일반적으로 사용자가 작업을 일으키는 명령을 입력하는 텍스트 창에서 실행되는 명령어프로세서입니다.Bash는 셸 스크립트라고 불리는 파일에서 명령을 읽고 실행할 수도 있습니다.대부분의 Unix 쉘과 마찬가지로 조건 테스트 반복을 위한 파일 이름 글로벌화(와일드 카드 매칭), 파이프, 여기 문서, 명령어 대체, 변수제어 구조를 지원합니다.키워드, 구문, 동적 범위 변수 및 기타 언어의 기본 기능은 모두 sh에서 복사한 것입니다.이력 의 다른 기능은 cshksh에서 복사됩니다.Bash는 POSIX에 준거한 셸이지만 다수의 확장자를 가지고 있습니다.

이 셸의 이름은 Bourne Again Shell의 약자로, 본 셸이 대체한[21] 본 셸이름에서 따온 말장난으로 "[22][23]다시 태어난다"는 개념이다.

Shellshock이라고 불리는 버전 1.03(1989년 [24]8월) 이후 Bash의 보안 취약점이 2014년 9월 초에 발견되어 인터넷[25][26][27]통한 광범위한 공격으로 이어졌습니다.버그를 수정하기 위한 패치는 버그가 발견된 직후에 사용할 수 있게 되었습니다.

역사

Brian Fox는 리처드 스톨먼이 [13]이전 개발자가 진행하지 못한 것에 불만을 품은 후 1988년 [28]1월 10일 Bash를 코딩하기 시작했다.Stallman과 Free Software Foundation(FSF)은 기존 셸 스크립트를 BSD와 GNU 코드로 구축된 완전히 자유로운 시스템에 매우 전략적으로 실행할 수 있는 무료 셸을 검토했으며, 이는 Fox가 FSF의 [13][29]직원으로서 이 작업을 수행하는 몇 안 되는 프로젝트 중 하나였습니다.Fox는 1989년 [15]6월 8일 베타 버전 .99로 Bash를 출시했으며 1992년 중반과[30] 1994년 [31]중반 사이에 그가 FSF에서[32] 해고되고 그의 책임이 또 다른 초기 기여자인 Chet [33][34][35]Ramey로 넘어갈 때까지 주요 유지자로 남아있었다.

그 이후로 Bash는 리눅스 사용자들 사이에서 가장 인기 있는 셸이 되었고, 2019년 [38][39][16]10월 Catalina 이전 운영 체제의 다양한 배포판[36][37](알엠퀴스트 셸이 기본 스크립팅 셸일 수도 있음)과 애플의 맥OS 릴리스에서 기본 인터랙티브 셸이 되었다.또한 Bash는 Microsoft Windows로 이식되어 CygwinMinGW를 통해 배포되었으며 DJGPP 프로젝트에 의해 DOS로, Novell NetWare에 의해, GNV [40]프로젝트에 의해 OpenVMS로,[41] ArcaOS에 의해, 다양한 터미널 에뮬레이션 애플리케이션을 통해 Android로 배포되었습니다.

2014년 9월 Unix/Linux 전문가 [42]Stéphane Chazelas는 프로그램에서 보안 버그를 발견했습니다.9월 24일 처음 공개된 이 버그는 Shellshock이라는 이름으로 CVE-라는 번호를 부여받았다.2014-6271, CVE-2014-6277CVE-2014-7169.Bash를 사용하는 CGI 스크립트가 취약할 수 있기 때문에 이 버그는 중대하다고 간주되어 임의의 코드 실행이 가능하게 되었습니다.이 버그는 Bash가 환경변수[43]통해 함수 정의를 서브셸에 전달하는 방법과 관련이 있습니다.

특징들

Bash 명령어 구문은 Bourne 셸 명령어 구문의 상위 세트입니다.Bash는 브레이스 확장, 명령줄 완료(프로그래머블 완료),[44] 기본[45] 디버깅 및 신호 처리(사용)를 지원합니다.trapbash 2.05a부터[46])가 추가되어 있습니다.Bash는 Bourne 셸 스크립트의 대부분을 변경하지 않고 실행할 수 있습니다.단, Bourne 셸 스크립트가 Bash에서 다르게 해석되는 프린지 구문 동작에 휘말리거나 새로운 Bash 빌트인에 일치하는 시스템명령어를 실행하려고 하는 경우 등은 예외입니다.Bash 명령어 구문에는 명령줄 편집, 명령어 이력 등 KornShell(ksh) 및 C 쉘(csh)에서 가져온 아이디어가 포함됩니다.history명령어),[47] 디렉토리 스택,$RANDOM그리고.$PPID변수 및 POSIX 명령어 대체 구문$(…).

사용자가 대화형 명령 셸 내에서 탭를 누르면 Bash는 자동으로 베타 버전 2.04 [48]이후 명령줄 완료를 사용하여 부분적으로 입력된 프로그램 이름, 파일 이름 및 변수 이름을 일치시킵니다.Bash 명령줄 완료 시스템은 매우 유연하고 커스터마이즈 가능하며, 종종 특정 프로그램 및 태스크의 인수 및 파일 이름을 완료하는 함수와 함께 패키지화됩니다.

Bash의 구문은 Bourne 쉘에 없는 많은 확장자를 가지고 있다.Bash는 외부 프로세스를 발생시키지 않고 정수 계산("산술 평가")을 수행할 수 있습니다.를 사용합니다.((…))명령어 및$((…))이 목적을 위한 변수 구문.이 구문은 I/O 리다이렉션을 단순화합니다.예를 들어 표준출력(stdout)과 표준오류(stderr)를 동시에 리다이렉트 할 수 있습니다.&>교환입니다.이것은 Bourne 쉘에 상당하는 것보다 입력이 간단합니다.command > file 2>&1'. Bash는 다음을 사용한 프로세스 대체를 지원합니다.<(command)그리고.>(command)구문: 보통 파일 이름이 사용되는 명령어의 출력(또는 입력)을 대체합니다.(이것은, 그것을 서포트하는 시스템의 /proc/fd/named 파이프, 또는 필요에 따라서 일시적인 이름 붙여진 파이프를 통해서 실장됩니다).

function' 키워드를 사용하면 Bourne/Korn/POSIX 스크립트와는 Bourne/Korn/POSIX 함수 선언이 호환되지 않지만 Bash는 Bourne 및 Korn 쉘과 동일한 함수 선언 구문을 받아들이며 POSIX에 준거합니다.Bourne 또는 Korn의 셸 인터프리터에서는 이러한 호환성을 염두에 두고 의도적으로 작성되지 않는 한 Bash 셸 스크립트를 실행할 수 있는 경우가 거의 없습니다.Linux가 보급됨에 따라 Bash 셸 스크립트는 거의 사용되지 않습니다.단, POSIX 모드에서는 Bash가 POSIX와 보다 [49]밀접하게 일치합니다.

Bash는 여기서 문서를 지원합니다.버전 2.05b Bash는 다음 명령어를 사용하여 "여기 문자열"에서 표준 입력(stdin)을 리다이렉트할 수 있습니다.<<<교환입니다.

Bash 3.0은 [50]Perl을 연상시키는 구문을 사용하여 처리 중인 정규 표현 조회를 지원합니다.

2009년 [51]2월에 Bash 4.0은 관련 어레이 [11]지원을 도입했습니다.연관 배열 인덱스는 AWK 또는 [52]Tcl과 유사한 방식으로 문자열입니다.다차원 어레이를 에뮬레이트하는 데 사용할 수 있습니다.또한 Bash 4는 라이선스를 GPL-3.0 이후로 전환합니다.사용자에 따라서는 이 라이선스 변경이 MacOS가 이전 버전을 계속 사용하는 [53]이유일 것으로 의심하고 있습니다.애플은 2019년 [20]MacOS Catalina 출시와 함께 운영 체제에서 Bash를 디폴트 셸로 사용하는 것을 마침내 중단했다.

가새 확장

교대라고도 불리는 브레이스 확장은 C 쉘에서 복사된 기능입니다.그러면 일련의 대체 조합이 생성됩니다.생성된 결과는 파일로 존재할 필요가 없습니다.확장된 각 문자열의 결과는 정렬되지 않고 왼쪽에서 오른쪽으로 순서가 유지됩니다.

$ echo a{p,c,d,b}e ape ace ade ave $ echo {a,b,c}{d,e,f} adae af bd bf cd cf

Bourne 쉘에서는 동일한 출력이 생성되지 않으므로 사용자는 휴대용 셸 스크립트에서 브레이스 확장을 사용하지 마십시오.

$ # 기존 셸에서는 동일한 출력 $/bin/sh -c 'echo a {p,c,d,b}e' a{p,c,d,b}e생성되지 않습니다.

브레이스 확장이 와일드카드와 결합되면 먼저 브레이스가 확장되고 다음으로 생성된 와일드카드가 정상적으로 대체됩니다.따라서 현재 디렉토리의 JPEG 및 PNG 이미지 목록은 다음을 사용하여 얻을 수 있습니다.

ls *.{jpg,sng,png}#은 *.jpg *.pg*로 확장됩니다.이후 # 와일드카드에코 *.{png,sng{e,}g}# 에코만 표시 - # 및 중괄호 안의 중괄호가 가능합니다. 

교대 외에 두 개의 정수 또는 이중 점으로 구분된 문자 사이의 순차적 범위에도 가새 확장을 사용할 수 있습니다.새로운 버전의 Bash에서는 세 번째 정수로 증분을 지정할 수 있습니다.

$ 에코 {1}..10) 1 2 3 4 5 6 7 8 9 10 $ 에코 {01..10} 01 02 03 04 05 06 07 08 09 10달러 에코 파일 {1}4 . txt file 1 txt file2 입니다.txt file3 입니다.txt file4 입니다.txt $ echo {a..e} a b c d e $ echo {1..10}3 4 7 10달러 에코 {a..j..3) dg j

가새 확장이 가변 확장(A.K.A. 매개 변수 확장매개 변수 대체)과 결합된 경우, 가새 확장 후에 변수 확장이 수행되며, 경우에 따라 가새 확장의 사용이 필요할 수 있습니다.eval다음과 같은 기능이 내장되어 있습니다.

$ start=1; end=10 $ 에코 {$start}평가 순서 {1} 때문에 $end} #을() 확장할 수 없습니다.10} $ eval echo {$start}$end} # 변수 확장이 발생하면 결과 문자열이 평가됩니다.1 2 3 4 5 6 7 8 9 10

기동 스크립트

Bash가 시작되면 다양한 닷파일의 명령어가 실행됩니다.Bash 쉘 스크립트와 달리 닷 파일에는 일반적으로 실행 권한이나 다음과 같은 인터프리터 디렉티브가 설정되어 있지 않습니다.#!/bin/bash.

레거시 호환 Bash 시작 예시

골격~/.bash_profile아래는 Bourne 쉘과 호환되며 csh와 유사한 의미를 제공합니다.~/.bashrc그리고.~/.bash_login.그[ -r filename ] && cmd는 파일명이 존재하며 읽을 수 있는지 여부를 테스트하는 단락 평가입니다.다음 부분은 생략합니다.&&그렇지 않다면.

[ - r ~ / . profile ]& . / . . . profile #는 [ - n " $ PS1 ] ; #이 대화식 경우에만 Bourne-sh 구문을 설정합니다.[ - r ~ / . bashrc ]& . / . bashrc # tty / prompt / 함수 셋업 [ - r ~ / . bash _ login ]& . ~ . bash _ login #로그인 셸 fi #로그인 에만 대한 모든 at-login 태스크 # "if"의 

Bash 부팅 시 운영 체제 문제

Unix 및 Linux 일부 버전에는 Bash 시스템 시작 스크립트가 포함되어 있으며 일반적으로/etc디렉토리로 이동합니다.Bash는 표준 초기화의 일부로 이러한 파일을 호출하지만 다른 시작 파일은 문서화된 Bash 시작 순서와 다른 순서로 읽을 수 있습니다.루트 사용자 파일의 기본 내용에도 문제가 있을 수 있습니다.또, 셋업시에 시스템이 새로운 유저 어카운트에 제공하는 스켈레톤 파일도 있습니다.X 윈도 시스템을 기동하는 기동 스크립트는 윈도 매니저를 기동하기 전에 사용자 환경변수를 설정하기 위해 사용자의 Bash 기동 스크립트로 놀라운 조작을 할 수도 있습니다.이러한 문제는, 많은 경우,~/.xsession또는~/.xprofile열람을 신청하다~/.profile- xterm 또는 Gnome Terminal과 같이 Bash 셸 창이 창 관리자에서 생성하는 환경 변수를 제공합니다.

휴대성

를 사용한 Bash 호출--posix옵션 또는 기술set -o posix스크립트에서는 Bash가 POSIX 1003.2 [54]표준에 매우 근접하게 준거합니다.이식성을 목적으로 하는 Bash 쉘 스크립트는 적어도 POSIX 쉘 표준을 고려해야 합니다.POSIX에서 찾을 수 없는 bash 기능은 다음과 같습니다.[54][55]

  • 특정 확장 호출 옵션
  • 가새 확장
  • 어레이 및 관련 어레이
  • 이중 괄호[[ ... ]]확장 테스트 구성 및 그 정규식 일치
  • 이중 부모 산술 평가 구성(만 해당)(( ... ));$(( ... ))POSIX 인가요?
  • 파라미터 확장에서의 특정 문자열 조작 조작
  • local범위 변수의 경우
  • 프로세스 대체
  • Bash 고유의 빌트인
  • 코프로세스
  • $EPOchSEConds 변수와 $EPOchREALTIME 변수

코드 조각이 이러한 기능을 사용하면 "배시즘(bashism)"이라고 불리며 이는 휴대용 사용에 관한 문제입니다.데비안스checkbashisms및 Vidar Holen'sshellcheck를 사용하여 스크립트에 이러한 [57][58]부분이 포함되어 있지 않은지 확인할 수 있습니다.목록은 실제 타깃셸에 따라 달라집니다.Debian 정책에서는 스크립트에서 (대시셸[55]있는 것과 같이) 일부 확장을 허용하는 반면 autoconf 등의 POSIX Bourne 이전 셸을 지원하는 스크립트입니다.configure에서는,[59] 사용할 수 있는 기능이 한정되어 있는 기능은 더욱 한정되어 있습니다.

키보드 단축키

Bash는 readline을 사용하여 기본(Emacs) 키바인딩을 사용하여 명령줄 편집을 위한 키보드숏컷을 제공합니다.Vi-binding은 실행함으로써 활성화 할 수 있습니다.set -o vi를 클릭합니다.[60]

프로세스 관리

Bash 쉘에는 배치 모드와 동시 모드라는 가지 명령어 실행 모드가 있습니다.

명령을 배치(즉, 순차적으로)로 실행하려면 명령을 문자 ";" 또는 별도의 라인으로 구분해야 합니다.

command1; command2

이 예에서는 command1이 완료되면 command2가 실행됩니다.

command1의 백그라운드 실행은 실행 명령어 말미에 (심볼 &)를 사용하여 발생할 수 있으며 프로세스는 백그라운드에서 실행되어 셸로 즉시 제어가 반환되어 명령어 실행을 계속할 수 있게 됩니다.

명령어 1 및

또는 2개의 command1과 command2를 동시에 실행하려면 다음 방법으로 Bash 쉘에서 실행해야 합니다.

command1 및 command2

이 경우 command1은 백그라운드&심볼로 실행되며 포그라운드에서 command2를 실행하는 셸로 즉시 제어가 돌아갑니다.

다음과 같이 입력하여 프로세스를 중지하고 bash에 제어를 반환할 수 있습니다.Ctrl+z 프로세스가 [61]포그라운드에서 실행되고 있는 동안

백그라운드 및 정지된 모든 프로세스 목록은 를 실행하여 얻을 수 있습니다.jobs:

$작업 [1] - 명령어 실행1 및 [2]+ 정지된 명령어2 

출력에서 괄호 안의 숫자는 작업 ID를 나타냅니다.플러스 기호는 다음 기본 프로세스를 나타냅니다.bg그리고.fg"Running(실행 중)" 및 "Stopped(정지 중)"마지막 문자열은 프로세스를 시작한 명령어입니다.

프로세스 상태는 다양한 명령을 사용하여 변경할 수 있습니다.fg명령어는 프로세스를 포그라운드로 가져옵니다.bg는 백그라운드에서 실행 중인 정지된 프로세스를 설정합니다. bg그리고.fg는 작업 ID를 첫 번째 인수로 사용하여 작업을 수행할 프로세스를 지정할 수 있습니다.이것이 없으면 기본 프로세스를 사용합니다.기본 프로세스는 출력에서 플러스 기호로 식별됩니다.jobs.그kill명령을 사용하여 프로세스를 조기에 종료할 수 있습니다.작업 ID는 퍼센트 기호 뒤에 지정해야 합니다.

%1을(를) 죽이다

조건부 실행

Bash는 "조건부 실행" 명령어 구분자를 제공합니다.이 구분자는 선행 명령에 의해 설정된 종료 코드에 따라 명령어를 실행합니다.예를 들어 다음과 같습니다.

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

여기서 ./do_somethingcd(change directory) 명령어가 "successful"(종료 상태 0을 반환함)인 경우에만 실행됩니다.echo 명령어는 cd 또는 ./do_something 명령어가 "error"(종료 상태 0을 반환함)를 반환하는 경우에만 실행됩니다.

모든 명령에 대해 종료 상태가 특수 변수에 저장됩니다.$?. Bash도 지원if ...;then ...;else ...;fi그리고.case $VARIABLE in $pattern)...;;$other_pattern)...;; esac조건부 명령어 평가 형식입니다.

버그 리포트

bashbug라는 외부 명령어는 Bash 쉘 버그를 보고합니다.명령어가 호출되면 사용자의 기본 에디터에 입력할 폼이 표시됩니다.양식은 Bash 유지관리자(또는 다른 이메일 주소)[62][63]에게 발송됩니다.

프로그램 가능 완료

Bash는 빌트인을 통한 프로그램 완료 지원complete,compopt,그리고.compgen명령어를 지정합니다.[64]이 기능은 2000년에 [65][66]출시된 2.04 베타 버전부터 사용할 수 있습니다.이러한 명령은 명령(즉, 설치된 프로그램), 함수, 변수 및 파일 [67]이름에 대해 복잡하고 지능적인 완료 지정을 가능하게 합니다.

complete그리고.compopt 개의 명령어는 사용 가능한 일부 명령 또는 옵션의 인수를 리드라인 입력에 나열하는 방법을 지정합니다.버전 5.1 에서는, 커맨드의 완료 또는 옵션은, 통상,[67] 그 이름을 입력한 후에 키 스트로크에 의해서 액티브하게 됩니다.

릴리스 이력

버전 발매일 릴리스 노트
bash-5.1 2020-12-07 github 버전 이력 NEWS [11]
bash-5.0 2019-01-07 [68][69][70]
bash-5.0-rc1 2018-12-20
bash-5.0-1992 2018-11-28
bash-5.0-1989 2018-09-17
bash-5.0-alpha 2018-05-22
bash-4.4 2016-09-15 github 버전 이력 NEWS v4.4
bash-4.4-rc2 2016-08-22
bash-4.4-rc1 2016-02-24
bash-4.4-1992 2016-07-11
bash-4.4-1996 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

「 」를 참조해 주세요.

레퍼런스

  1. ^ 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. ^ Ramey, Chet (April 20, 2021). "The GNU Bourne-Again Shell". Technology Infrastructure Services. Case Western Reserve University. Retrieved March 1, 2022.
  3. ^ "Bash-5.1 Official Patch 16". Retrieved February 4, 2022.
  4. ^ Chet Ramey (January 21, 2022). "Bash-5.2-alpha available". Retrieved February 2, 2022.
  5. ^ "Bash FAQ, version 4.14". Archived from the original on September 1, 2018. Retrieved April 9, 2016.
  6. ^ "Missing source code - GPL compliance? · Issue #107 · Microsoft/WSL". GitHub. Archived from the original on September 24, 2019. Retrieved July 8, 2016.
  7. ^ "GNU Bash". Softpedia. SoftNews. January 23, 2010. Archived from the original on October 21, 2017. Retrieved April 9, 2016.
  8. ^ 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. ^ "bash-1.11". oldlinux.org. See test.c for GPL-2.0-or-later
  10. ^ "bash-1.05.tar". oldlinux.org.
  11. ^ a b c "BashFAQ/061 - Greg's Wiki". mywiki.wooledge.org. Archived from the original on March 2, 2021. Retrieved March 1, 2021.
  12. ^ "Is there a way to download the presumably initial bash source bash-0.99?". unix.stackexchange.com.
  13. ^ a b c 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. ^ 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 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 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. ^ Torvalds, Linus Benedict (August 1991). "comp.os.minix". Retrieved September 6, 2009. I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
  18. ^ "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.
  19. ^ "User Environment Feature Changes". Oracle. Archived from the original on June 12, 2018. Retrieved June 8, 2018.
  20. ^ a b 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.
  21. ^ "I Almost Get a Linux Editor and Compiler". Dr. Dobb's. Archived from the original on March 2, 2021. Retrieved September 12, 2020.
  22. ^ 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.
  23. ^ 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".
  24. ^ Chazelas, Stephane (October 4, 2014). "oss-sec mailing list archives". Seclists.org. Archived from the original on October 6, 2014. Retrieved October 4, 2014.
  25. ^ 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.
  26. ^ 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.
  27. ^ Seltzer, Larry (September 29, 2014). "Shellshock makes Heartbleed look insignificant". ZDNet. Archived from the original on May 14, 2016.
  28. ^ 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
  29. ^ 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.
  30. ^ 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.
  31. ^ 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.
  32. ^ Chet Ramey (October 31, 2010), Dates in your Computerworld interview, archived from the original on July 20, 2012, retrieved October 31, 2010
  33. ^ 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.
  34. ^ 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.
  35. ^ 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.
  36. ^ 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.
  37. ^ 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.
  38. ^ 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.
  39. ^ "Use zsh as the default shell on your Mac - Apple Support". Archived from the original on December 2, 2019. Retrieved July 1, 2019.
  40. ^ "Installing the new GNV packages". Archived from the original on October 3, 2020. Retrieved September 4, 2020.
  41. ^ "Compatibility Subsystems". Archived from the original on September 23, 2020. Retrieved September 4, 2020.
  42. ^ 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.
  43. ^ 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.
  44. ^ "Bash Reference Manual". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  45. ^ "Debugging Bash scripts". tldp.org. Archived from the original on November 4, 2018. Retrieved November 20, 2018.
  46. ^ "Bash changes [Bash Hackers Wiki (DEV 20200708T2203)]". wiki-dev.bash-hackers.org. Archived from the original on September 23, 2019. Retrieved September 23, 2019.
  47. ^ "Bash Reference Manual". www.gnu.org. Archived from the original on September 15, 2019. Retrieved September 15, 2019.
  48. ^ "Working more productively with bash 2.x/3.x". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  49. ^ "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
  50. ^ "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.
  51. ^ "Bash, version 4". tldp.org. Archived from the original on July 1, 2018. Retrieved June 25, 2018.
  52. ^ "Arrays (Bash Reference Manual)". www.gnu.org. Archived from the original on July 11, 2018. Retrieved July 4, 2018.
  53. ^ "macos - Update bash to version 4.0 on OSX". Ask Different. Archived from the original on June 25, 2018. Retrieved June 25, 2018.
  54. ^ a b Mendel Cooper. "Portability Issues". The Linux Documentation Project. ibiblio.org. Archived from the original on January 27, 2012. Retrieved January 26, 2012.
  55. ^ a b "10. Files". Debian Policy Manual v4.5.0.2. Archived from the original on May 12, 2020. Retrieved May 11, 2020.
  56. ^ "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.
  57. ^ checkbashisms(1)Linux 일반 명령어 매뉴얼
  58. ^ shellcheck(1)Linux 일반 명령어 매뉴얼
  59. ^ "Portable Shell". Autoconf. Archived from the original on March 2, 2021. Retrieved January 20, 2020.
  60. ^ "BASH Help - A Bash Tutorial". Hypexr.org. October 5, 2012. Archived from the original on March 2, 2021. Retrieved July 21, 2013.
  61. ^ "Bash Reference Manual". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  62. ^ bashbug (1) 2018년 10월 2일 Wayback Machine(die.net에서 아카이브 완료)
  63. ^ "Linux / Unix Command : bashbug" 2014년 10월 6일 Wayback Machine apple.com에서 아카이브 완료
  64. ^ "Bash Reference Manual". tiswww.case.edu.
  65. ^ "Working more productively with bash 2.x/3.x". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  66. ^ "Index of /gnu/bash". ftp.swin.edu.au. Archived from the original on March 8, 2020. Retrieved September 15, 2019.
  67. ^ a b "An Introduction to Programmable Completion". tldp.org. Retrieved January 21, 2022.
  68. ^ "github version history NEWS v5.0". GitHub. Archived from the original on May 4, 2022. Retrieved March 1, 2021.
  69. ^ "Bash changes [Bash Hackers Wiki]". Archived from the original on March 18, 2020. Retrieved November 25, 2019.
  70. ^ "Bash-5.0 release available". lists.gnu.org. Archived from the original on November 8, 2020. Retrieved March 1, 2021.

외부 링크