Bash - 리눅스 커맨드 - 유닉스 커맨드

이름

bash - GNU Bourne-Again 다시보기

개요

bash [옵션] [파일]

기술

Bash 는 표준 입력 또는 파일에서 읽은 명령을 실행하는 sh 호환 명령 언어 인터프리터입니다. Bash 는 또한 KornC 쉘 ( kshcsh )의 유용한 기능을 통합합니다.

Bash 는 IEEE POSIX 셸 및 도구 사양 (IEEE 작업 그룹 1003.2)을 준수하도록 고안되었습니다.

옵션

set 내장 명령의 설명에 설명 된 단일 문자 쉘 옵션 외에도 bash 는 호출 될 때 다음 옵션을 해석합니다.

-c 문자열

-c 옵션이 있으면 문자열 에서 명령을 읽습니다. 문자열 뒤에 인수가 있으면 $ 0 부터 시작하여 위치 매개 변수에 지정됩니다.

-나는

-i 옵션이 있으면 쉘은 대화 형 입니다.

-엘

bash 가 로그인 쉘로 호출 된 것처럼 작동하게하십시오 (아래의 INVOCATION 참조).

-아르 자형

-r 옵션이 있으면 쉘이 제한됩니다 (아래 제한된 쉘 참조).

-에스

-s 옵션이 있거나 옵션 처리 후 인수가 남아 있지 않으면 표준 입력에서 명령을 읽습니다. 이 옵션은 대화식 쉘을 호출 할 때 위치 매개 변수를 설정할 수있게합니다.

-디

$ 로 시작하는 큰 따옴표로 묶인 문자열의 목록이 표준 출력에 인쇄됩니다. 이들은 현재 로케일이 C 또는 POSIX 가 아닐 때 언어 변환의 대상이되는 문자열입니다. 이것은 -n 옵션을 의미합니다. 명령이 실행되지 않습니다.

[- +] O [ shopt_option ]

shopt_optionshopt 내장 명령에 허용되는 쉘 옵션 중 하나입니다 (아래 쉘 빌드 명령 참조). shopt_option 이 있으면, -O 는 그 옵션의 값을 설정합니다; + O는 그것을 설정 해제합니다. shopt_option 이 제공되지 않으면, shopt 가 허용하는 쉘 옵션의 이름과 값이 표준 출력에 인쇄됩니다. 호출 옵션이 + O 이면, 출력은 입력으로 재사용 될 수있는 형식으로 표시됩니다.

-

A - 옵션의 끝을 알리고 추가 옵션 처리를 비활성화합니다. - 뒤에 오는 인수는 파일 이름 및 인수로 처리됩니다. - 의 인수는 - 와 같습니다.

Bash 는 여러 개의 다중 문자 옵션을 해석합니다. 이 옵션은 단일 문자 옵션을 인식하기 전에 명령 행에 나타나야합니다.

--dump-po-strings

-D 와 동등하지만 출력은 GNU gettext po (휴대용 객체) 파일 형식입니다.

--dump-strings

-D 와 같습니다.

--도움

표준 출력에 사용법 메시지를 표시하고 성공적으로 종료하십시오.

--init-file 파일

--rcfile 파일

쉘이 대화식 인 경우 표준 개인 초기화 파일 ~ / .bashrc 대신 파일 에서 명령을 실행하십시오 (아래의 INVOCATION 참조).

--로그인

-l과 같습니다.

- noediting

쉘이 대화 형 일 때 GNU readline 라이브러리를 사용하여 명령 행을 읽지 마십시오.

--noprofile

/ etc / profile 또는 개인 초기화 파일 ~ / .bash_profile , ~ / .bash_login 또는 ~ / .profile 중 하나를 읽지 마십시오. 기본적으로 bash 는 로그인 쉘로 호출 될 때이 파일을 읽습니다 (아래의 INVOCATION 참조).

- 노르

셸이 대화식 인 경우 개인 초기화 파일 ~ / .bashrc를 읽고 실행하지 마십시오. 쉘이 sh 로 호출되면이 옵션은 기본적으로 설정됩니다.

--posix

기본 조작이 POSIX 1003.2 표준과 다른 경우 ( POSIX 모드 ) bash 의 동작을 변경하십시오.

--한정된

셸이 제한됩니다 (아래 제한된 쉘 참조).

--rpm-requires

쉘 스크립트를 실행하는 데 필요한 파일 목록을 생성하십시오. 이것은 '-n'을 의미하며 컴파일 타임 오류 검사와 동일한 제한 사항이 적용됩니다. Backticks, [] 테스트 및 evals는 구문 분석되지 않으므로 일부 종속성이 누락 될 수 있습니다. --verbose -v 와 동일합니다.

--번역

bash 인스턴스에 대한 버전 정보를 표준 출력에 표시하고 성공적으로 종료하십시오.

논증

옵션 처리 후 인수가 남아 있고 -c 또는 -s 옵션이 제공되지 않은 경우 첫 번째 인수는 쉘 명령을 포함하는 파일의 이름으로 간주됩니다. bash 가이 f 식으로 호출되면, $ 0 은 파일의 이름으로 설정되고 위치 지정 매개 변수는 나머지 인수로 설정됩니다. Bash 는이 파일에서 명령을 읽고 실행 한 다음 종료합니다. Bash 의 종료 상태는 스크립트에서 실행 된 마지막 명령의 종료 상태입니다. 명령이 실행되지 않으면 종료 상태는 0입니다. 먼저 현재 디렉토리에서 파일을 열려고 시도하고 파일이 없으면 PATH 의 디렉토리에서 스크립트를 검색합니다.

기도

로그인 쉘 은 인수 0의 첫 문자가 - 또는 --login 옵션으로 시작되는 문자입니다.

대화 형 쉘은 옵션이 아닌 인수없이 시작되고 표준 입력과 출력이 모두 터미널에 연결되는 -c 옵션없이 시작됩니다 ( isatty (3)에 의해 결정됨) 또는 -i 옵션으로 시작되는 쉘입니다. PS1 이 설정되고 $ - bash 가 대화 형이면 i 가 포함되어 쉘 스크립트 나 시작 파일이이 상태를 테스트 할 수 있습니다.

다음 단락은 bash 가 시작 파일을 실행하는 방법을 설명합니다. 파일이 있지만 읽을 수없는 경우 bash 는 오류를보고합니다. TildeEXPANSION 섹션의 Tilde Expansion 아래에 설명 된대로 파일 이름으로 확장 됩니다.

bash 가 대화식 로그인 쉘 또는 --login 옵션과 함께 비대화 형 쉘로 호출 될 때, bash/ etc / profile 파일에서 명령을 읽고 실행합니다 (해당 파일이있는 경우). 이 파일을 읽은 후에는 ~ / .bash_profile , ~ / .bash_login~ / .profile 을이 순서로 검색하여 존재하고 읽을 수있는 첫 번째 명령을 읽고 실행합니다. --noprofile 옵션은 셸이이 동작을 금지하기 시작할 때 사용될 수 있습니다.

로그인 쉘이 종료되면 bash~ / .bash_logout 파일 (있는 경우)에서 명령을 읽고 실행합니다.

로그인 셸이 아닌 대화 형 셸이 시작될 때 bash~ / .bashrc ( 해당 파일이있는 경우)에서 명령을 읽고 실행합니다. 이것은 --norc 옵션을 사용하여 금지 될 수 있습니다. --rcfile file 옵션은 bash~ / .bashrc 대신 파일 에서 명령을 읽고 실행하도록합니다.

예를 들어, 쉘 스크립트를 실행하기 위해 bash 가 비대화 형으로 시작되면, 환경에서 변수 BASH_ENV를 찾고 거기에 나타나면 값을 확장하고 확장 된 값을 읽고 실행하는 파일의 이름으로 사용합니다 . Bash 는 다음 명령이 실행 된 것처럼 작동합니다.

if [-n "$ BASH_ENV"]; 그럼. "$ BASH_ENV"; fi

그러나 PATH 변수의 값은 파일 이름을 검색하는 데 사용되지 않습니다.

bashsh 라는 이름으로 호출되면 POSIX 표준을 준수하면서 sh의 이전 버전의 시작 동작을 가능하면 가깝게 모방하려고 시도합니다. 대화식 로그인 쉘 또는 --login 옵션을 가진 비대화 형 쉘로 호출되면, 먼저 / etc / profile~ / .profile 에서 명령을 읽고 실행하려고 시도합니다. --noprofile 옵션을 사용하면이 동작을 금지 할 수 있습니다. sh 라는 이름의 대화 형 쉘로 호출되면, bash 는 변수 ENV를 찾고, 정의 된 경우 해당 값을 확장하고, 확장 된 값을 읽고 실행하는 파일의 이름으로 사용합니다. sh로 호출 된 쉘은 다른 시작 파일에서 명령을 읽고 실행하지 않으므로 --rcfile 옵션은 아무 효과가 없습니다. sh 라는 이름으로 호출 된 비대화 형 쉘은 다른 시동 파일을 읽지 않습니다. sh로 호출되면 bash 는 시작 파일을 읽은 후 posix 모드로 들어갑니다.

bashposix 모드에서 시작될 때, --posix 명령 행 옵션과 마찬가지로, 이것은 시작 파일에 대한 POSIX 표준을 따릅니다. 이 모드에서 대화식 셸은 ENV 변수를 확장하고 확장 된 이름의 파일에서 명령을 읽고 실행합니다. 다른 시작 파일은 읽지 않습니다.

Bash 는 원격 쉘 데몬, 보통 rshd에 의해 실행될 때를 결정하려고 시도합니다. bashrshd 에 의해 실행 중이라고 판단한 경우 ~ / .bashrc에있는 명령을 읽고 실행합니다 (해당 파일이 존재하고 읽을 수있는 경우). sh로 호출하면이 작업을 수행하지 않습니다. --norc 옵션을 사용하면이 동작을 금지 할 수 있으며 --rcfile 옵션을 사용하여 다른 파일을 강제로 읽을 수 있지만 rshd 는 일반적으로 해당 옵션으로 쉘을 호출하거나 지정하지 못하도록합니다.

유효 사용자 (그룹) ID가 실제 사용자 (그룹) ID와 같지 않고 쉘이 시작되고 -p 옵션이 제공되지 않으면 시작 파일이 읽히지 않고 쉘 기능이 환경에서 상속되지 않습니다. SHELLOPTS 변수가 환경에 나타나면 무시되고 유효 사용자 ID는 실제 사용자 ID로 설정됩니다. 호출시 -p 옵션이 제공된 경우 시작 동작은 동일하지만 유효 사용자 ID는 재설정되지 않습니다.

정의

다음 정의는이 문서의 나머지 부분에서 사용됩니다.

공백

공간 또는 탭.

워드

쉘에 의해 단일 단위로 간주되는 일련의 문자. 토큰 이라고도합니다.

이름

영숫자와 밑줄로만 구성되며 영문자 또는 밑줄로 시작하는 단어 . 식별자 라고도합니다.

메타 문자

인용되지 않을 때 단어를 분리하는 문자. 다음 중 하나 :

| &; () <> 스페이스 탭

제어 운영자

제어 기능을 수행하는 토큰 . 다음 기호 중 하나입니다.

|| &&&; ;; () | <개행 문자>

예약 된 단어

예약어 는 쉘에 특별한 의미가있는 단어입니다. 다음 단어는 인용되지 않은 경우에 예약 된 것으로 인식되며 간단한 명령의 첫 단어 (아래 SHELL GRAMMAR 참조) 또는 사례 의 세 번째 단어 또는 명령에 대해 인식됩니다.

! else if else if esac if while while {{} 시간 동안 선택하십시오.

쉘 그라마 마르

간단한 명령

간단한 명령공백으로 분리 된 단어와 리디렉션이 뒤따라 오는 선택적 변수 할당 순서이며 제어 연산자에 의해 종료됩니다. 첫 번째 단어는 실행할 명령을 지정하고 인수 0으로 전달됩니다. 나머지 단어는 호출 된 명령에 인수로 전달됩니다.

간단한 명령 의 반환 값은 종료 상태 또는 명령이 신호 n으로 종료되면 128+ n 입니다.

파이프 라인

파이프 라인 은 문자로 분리 된 하나 이상의 명령 시퀀스입니다. . 파이프 라인의 형식은 다음과 같습니다.

[ 시간 [ -p ]] [! ] 명령 [ | command2 ...]

명령 의 표준 출력은 파이프를 통해 command2 의 표준 입력에 연결됩니다. 이 연결은 명령에 지정된 임의의 리디렉션보다 먼저 수행됩니다 (아래의 REDIRECTION 참조).

예약어 ! 파이프 라인 앞에 나오면 그 파이프 라인의 종료 상태는 마지막 명령의 종료 상태의 논리적 NOT입니다. 그렇지 않으면, 파이프 라인의 상태는 마지막 명령의 종료 상태입니다. 쉘은 값을 리턴하기 전에 파이프 라인의 모든 명령이 종료되기를 기다립니다.

시간 예약어가 파이프 라인보다 선행하면 파이프 라인이 종료 될 때 실행에 의해 소비 된 경과 시간과 사용자 및 시스템 시간이보고됩니다. -p 옵션은 POSIX에 지정된 출력 형식을 변경합니다. TIMEFORMAT 변수는 타이밍 정보를 표시하는 방법을 지정하는 형식 문자열로 설정할 수 있습니다. 아래 쉘 변수TIMEFORMAT 에 대한 설명을 참조하십시오.

파이프 라인의 각 명령은 별도의 프로세스 (즉, 서브 셸)로 실행됩니다.

기울기

리스트 는 하나의 연산자로 구분 된 하나 이상의 파이프 라인의 시퀀스입니다 . , & , && 또는 || 선택적으로 다음 중 하나에 의해 종결된다 ; , & , 또는 .

이러한 목록 연산자 중 &&|| 동등한 우선권을 가지고 있으며 그 다음에 ;& 는 우선 순위가 동일합니다.

명령의 범위를 정하기 위해 세미콜론 대신 목록 에 하나 이상의 개행 문자 시퀀스가 ​​나타날 수 있습니다.

제어 연산자 & 가 명령을 종료하면 쉘은 서브 쉘의 백그라운드 에서 명령을 실행합니다. 쉘은 명령이 완료 될 때까지 기다리지 않고 리턴 상태는 0입니다 . 순차적으로 실행됩니다; 쉘은 각 명령이 차례로 종료 될 때까지 대기합니다. 반환 상태는 마지막으로 실행 된 명령의 종료 상태입니다.

제어 연산자 &&|| AND리스트와 OR리스트를 나타냅니다. AND 목록의 형식은 다음과 같습니다.

command1 && command2

command2command1 이 종료 상태 0을 리턴하는 경우에만 실행됩니다.

OR 목록에는 다음 형식이 있습니다.

command1 || command2

command1 이 0이 아닌 종료 상태를 리턴하는 경우에만 command2 가 실행됩니다. AND 및 OR 목록의 반환 상태는 목록에서 실행 된 마지막 명령의 종료 상태입니다.

복합 명령

복합 명령 은 다음 중 하나입니다.

( 목록 )

목록 은 서브 쉘에서 실행됩니다. 쉘의 환경에 영향을주는 변수 지정 W 내장 명령은 명령이 완료된 후에도 유효하지 않습니다. 반환 상태는 list 의 종료 상태입니다.

{ 목록 ; }

list 는 현재 쉘 환경에서 간단히 실행됩니다. 목록 은 줄 바꿈이나 세미콜론으로 끝나야합니다. 이를 그룹 명령이라고 합니다. 반환 상태는 list 의 종료 상태입니다. 메타 문자 () 와 달리 {}예약어 이며 예약어 가 인식되도록 허용 된 위치에 있어야합니다. 단어 분리를 일으키지 않으므로 공백으로 구분해야합니다.

(( 표현 ))

표현식 은 아래에 설명 된 ARITHMETIC EVALUATION의 규칙에 따라 평가 됩니다. 표현식의 값이 0이 아니면 리턴 상태는 0입니다. 그렇지 않으면 리턴 상태는 1입니다. 이것은 let " expression "과 정확히 동일합니다.

[[ 표현 ]]

조건식 표현식 의 평가에 따라 0 또는 1의 상태를 반환합니다. 표현은 조건 표현 아래에 설명되어있는 우선 순위로 구성 됩니다. 단어 분리 및 경로 이름 확장은 [[]] 사이의 단어에는 수행되지 않습니다. 물결 확장, 매개 변수 및 변수 확장, 산술 확장, 명령 대체, 프로세스 대체 및 견적 제거가 수행됩니다.

==! = 연산자가 사용되면 연산자 오른쪽의 문자열이 패턴으로 간주되어 패턴 일치 아래에 설명 된 규칙에 따라 일치 합니다. 문자열이 패턴과 일치하거나 일치하지 않으면 반환 값은 0이고, 그렇지 않으면 1입니다. 패턴의 일부는 문자열로 일치하도록 강제로 인용 할 수 있습니다.

표현식은 우선 순위가 내림차순으로 나열된 다음 연산자를 사용하여 결합 될 수 있습니다.

( 표현 )

expression 의 값을 반환합니다. 이것은 연산자의 일반적인 우선 순위를 무시하는 데 사용할 수 있습니다.

! 표현

expression 이 false이면 true입니다.

표현식 1 && 표현식 2

expression1expression2 가 모두 참이면 참입니다.

표현 1 || expression2 expression1 또는 expression2 가 true이면 true입니다.

&&|| 연산자는 expression1 의 값이 전체 조건식의 반환 값을 결정하기에 충분할 경우 expression2를 평가하지 않습니다.

이름에 [ 단어로 ]; 할 일 목록 ; 끝난

다음 오는 단어 목록이 확장되어 항목 목록을 생성합니다. 변수 이름 은이 목록의 각 요소에 차례로 설정되고 매번 list 가 실행됩니다. 단어 가 생략되면 for 명령은 설정된 각 위치 매개 변수에 대해 list를 한 번 실행 합니다 (아래 매개 변수 참조). 반환 상태는 실행되는 마지막 명령의 종료 상태입니다. 결과로 나오는 항목이 빈 목록으로 확장되면 명령이 실행되지 않고 반환 상태는 0입니다.

for (( expr1 ; expr2 ; expr3 )); 할 일 목록 ; 끝난

먼저 산술 표현식 expr1 이 산술 평가 아래에 설명 된 규칙에 따라 평가 됩니다. 산술 표현식 expr2 는 0으로 평가 될 때까지 반복적으로 평가됩니다. expr2 가 0이 아닌 값으로 평가 될 때마다 list 가 실행되고 연산 식 expr3 이 계산됩니다. 표현식을 생략하면 표현식이 1로 평가 된 것처럼 작동합니다. 반환 값은 실행 된 목록 의 마지막 명령의 종료 상태이거나 표현식 중 하나라도 유효하지 않으면 false입니다.

이름 선택 [ 단어 ]; 할 일 목록 ; 끝난

다음 오는 단어 목록이 확장되어 항목 목록을 생성합니다. 확장 된 단어 집합은 표준 오류에 인쇄되며 각 앞에 숫자가옵니다. 단어 가 생략되면 위치 매개 변수가 인쇄됩니다 (아래 매개 변수 참조). 그런 다음 PS3 프롬프트가 표시되고 표준 입력에서 행을 읽습니다. 행이 표시된 단어 중 하나에 해당하는 숫자로 구성되면 name 의 값은 해당 단어로 설정됩니다. 행이 비어 있으면 단어와 프롬프트가 다시 표시됩니다. EOF를 읽으면 명령이 완료됩니다. 읽히는 다른 값은 name 을 null로 설정합니다. 읽은 행은 변수 REPLY에 저장됩니다. 리스트break 명령이 실행될 때까지 각 선택 후에 실행됩니다. select 의 종료 상태는 list 에서 마지막으로 실행 된 명령의 종료 상태이고, 명령이 실행되지 않으면 0입니다.

대소 문자 [[(] pattern [ | pattern ]

case 명령은 먼저 단어를 확장하고 경로 이름 확장과 동일한 규칙을 사용하여 차례로 각 패턴 과 일치 시키려고 시도합니다 (아래 경로 이름 확장 참조). 일치하는 항목이 발견되면 해당 목록 이 실행됩니다. 첫 번째 경기 후에는 후속 경기가 시도되지 않습니다. 일치하는 패턴이 없으면 종료 상태는 0입니다. 그렇지 않으면 list 에서 마지막으로 실행 된 명령의 종료 상태입니다.

if list ; 다음 목록; [ elif 목록 ; 다음 목록 ; ] ... [ else list ; ] fi

if 목록 이 실행됩니다. 종료 상태가 0이면, then 리스트 가 실행됩니다. 그렇지 않으면 각 elif 목록 이 차례로 실행되고 종료 상태가 0이면 해당 목록 이 실행되고 명령이 완료됩니다. 그렇지 않으면 else 리스트 가 존재할 경우 실행됩니다. 종료 상태는 실행 된 마지막 명령의 종료 상태이며, 조건이 참으로 테스트되지 않으면 0입니다.

while list ; 할 일 목록 ; 끝난

목록 까지 ; 할 일 목록 ; 끝난

while 명령 list 의 마지막 명령이 0의 종료 상태를 리턴하는 한 do 목록 을 계속 실행합니다. until 명령은 테스트가 무효라는 점을 제외하고는 while 명령과 동일합니다. 목록 의 마지막 명령이 0이 아닌 종료 상태를 리턴하는 한 do 목록 이 실행됩니다. whileuntil 명령의 종료 상태는 실행 된 마지막 do list 명령의 종료 상태이거나, 실행 된 것이없는 경우 0입니다.

[ 함수 ] 이름 () { 목록 ; }

이 함수는 name 이라는 함수를 정의합니다. 함수 본문 은 {와} 사이의 명령 목록 입니다. 이 목록은 name 이 단순 명령의 이름으로 지정 될 때마다 실행됩니다. 함수의 종료 상태는 본문에서 실행 된 마지막 명령의 종료 상태입니다. 아래의 기능을 참조하십시오.

코멘트

비대화 형 쉘 또는 shopt 내장형에 대한 interactive_comments 옵션이 활성화 된 대화 형 쉘 (아래 쉘 빌드 명령 참조)에서 # 으로 시작하는 단어는 해당 단어와 그 행의 나머지 모든 문자를 무시합니다. interactive_comments 옵션이 설정되지 않은 대화식 셸은 주석을 허용하지 않습니다. 대화 형 셸에서는 interactive_comments 옵션이 기본적으로 설정됩니다.

QUOTING

인용 은 특정 문자 또는 단어의 특수한 의미를 쉘로 제거하는 데 사용됩니다. 따옴표를 사용하여 특수 문자에 대한 특수 처리를 사용하지 않도록 설정하고 예약어가 이와 같이 인식되지 않도록 방지하고 매개 변수 확장을 방지 할 수 있습니다.

위에서 정의 된 각 메타 문자 는 쉘에 대해 특별한 의미를 지니 며, 쉘 자체를 나타내려면 인용 부호로 묶어야합니다.

명령어 히스토리 확장 기능이 사용 중일 때, 보통 히스토리 확장 문자 ! 역사 확장을 막기 위해 반드시 인용해야합니다.

이스케이프 문자 , 작은 따옴표 및 큰 따옴표 등 세 가지 인용 메커니즘이 있습니다.

인용 부호가없는 백 슬래시 ( \ )는 이스케이프 문자 입니다. 을 제외하고 다음에 오는 문자의 리터럴 값을 유지합니다. \ 쌍이 나타나고 백 슬래시 자체가 따옴표로 묶이지 않으면 \ 은 줄 연속으로 처리됩니다 (즉, 입력 스트림에서 제거되어 효과적으로 무시됩니다).

작은 따옴표로 문자를 묶는 것은 따옴표 안에있는 각 문자의 리터럴 값을 보존합니다. 단일 인용 부호 사이에 작은 따옴표가있을 수 있습니다 (앞에 백 슬래시가있는 경우에도).

큰 따옴표로 문자를 묶는 것은 따옴표 안에있는 모든 문자의 리터럴 값을 유지합니다. 단, $ , `\ 는 예외입니다. 문자 $` 는 특별한 의미를 큰 따옴표 안에 넣습니다. 백 슬래시는 $ , ` , " , \ 또는 문자 중 하나가 뒤에 오는 경우에만 특별한 의미를 지닙니다. 큰 따옴표 안에 백 슬래시를 붙이면 큰 따옴표 안에 따옴표를 붙일 수 있습니다.

특수 매개 변수 *@ 는 큰 따옴표로 묶을 때 특별한 의미가 있습니다 (아래 매개 변수 참조).

$ ' string '형식의 단어는 특별히 처리됩니다. 단어는 ANSI C 표준에 지정된대로 바뀐 백 슬래시 이스케이프 문자로 문자열 로 확장됩니다. 백 슬래시 이스케이프 시퀀스가있는 경우 다음과 같이 디코딩됩니다.

\에이

경고 (벨)

\비

역행 키이

\이자형

이스케이프 문자

\에프

양식 사료

\엔

새로운 라인

\아르 자형

캐리지 리턴

\티

수평 탭

\V

수직 탭

\\

역 슬래시

\ '

작은 따옴표

\ nnn

값이 8 진수 값인 8 비트 문자 nnn (1 ~ 3 자리)

\ xHH

값이 16 진수 값 HH (1 자리 또는 2 자리 16 진수) 인 8 비트 문자

\ c x

제어 문자

마치 달러 기호가없는 것처럼 확장 된 결과는 작은 따옴표로 묶여 있습니다.

달러 기호 ( $ )가 앞에 오는 큰 따옴표로 묶인 문자열은 현재 로켈에 따라 문자열이 변환되도록합니다. 현재 로케일이 C 또는 POSIX 이면 달러 기호는 무시됩니다. 문자열이 변환되고 대체되면 대체 문자열은 큰 따옴표가 붙습니다.

매개 변수

매개 변수 는 값을 저장하는 엔티티입니다. 특수 매개 변수 아래에 나열된 특수 문자의 이름 , 숫자 또는 하나 일 수 있습니다. 쉘의 경우, 변수이름으로 표시된 매개 변수 입니다. 변수는 과 0 개 이상의 속성을가 집니다. 속성은 declare builtin 명령을 사용하여 할당됩니다 ( SHELL BUILTIN COMMANDS의 아래 선언 참조).

매개 변수에 값이 할당 된 경우 매개 변수가 설정됩니다. 널 문자열은 유효한 값입니다. 변수가 설정되면 unset 내장 명령을 사용하여 설정을 해제 할 수 있습니다 (아래 쉘 빌드 명령 참조).

변수 의 양식에 대한 설명이 지정 될 수 있습니다.

이름 = [ ]

value 가 지정되지 않으면 변수에 널 (null) 문자열이 지정됩니다. 모든 값에는 물결표 확장, 매개 변수 및 변수 확장, 명령 대체, 산술 확장 및 따옴표 제거가 적용됩니다 (아래 확장 참조). 변수에 정수 속성이 설정된 경우 $ ((...)) 확장을 사용하지 않아도 value 는 산술 확장의 영향을받습니다 (아래 산술 확장 참조). 특수 매개 변수 아래에 설명 된 "$ @" 을 제외하고는 단어 분리가 수행되지 않습니다. 경로 이름 확장이 수행되지 않습니다. 할당 문은 declare , typeset , export , readonlylocal 내장 명령에 대한 인수로 나타날 수도 있습니다.

위치 매개 변수

위치 매개 변수 는 한 자리 숫자 0이 아닌 하나 이상의 숫자로 표시된 매개 변수 입니다. 위치 매개 변수는 호출 될 때 쉘 인수에서 지정되며 내장 명령 세트를 사용하여 재 지정할 수 있습니다. 위치 매개 변수는 할당 문과 함께 할당되지 않을 수 있습니다. 위치 매개 변수는 쉘 함수가 실행될 때 임시로 대체됩니다 (아래 함수 참조).

두 자리 이상의 숫자로 이루어진 위치 매개 변수가 확장되면 중} 호로 - 어야합니다 (아래 EXPANSION 참조).

특수 매개 변수

쉘은 여러 매개 변수를 특별히 처리합니다. 이러한 매개 변수는 참조 할 수만 있습니다. 그들에게 할당하는 것은 허용되지 않습니다.

*

하나부터 시작하여 위치 매개 변수로 확장됩니다. 확장이 큰 따옴표 안에서 발생하면 각 매개 변수의 값이 IFS 특수 변수의 첫 번째 문자로 분리 된 단일 단어로 확장됩니다. 즉, " $ * "는 " $ 1 c $ 2 c ... "와 같습니다. 여기서 cIFS 변수 값의 첫 번째 문자입니다. IFS 가 설정되지 않은 경우 매개 변수는 공백으로 구분됩니다. IFS 가 널 (null)이면 매개 변수는 중간 분리 기호없이 결합됩니다.

@

하나부터 시작하여 위치 매개 변수로 확장됩니다. 확장이 큰 따옴표 안에 있으면 각 매개 변수가 별도의 단어로 확장됩니다. 즉, " $ @ "은 " $ 1 " " $ 2 "와 같습니다. 위치 매개 변수가없는 경우 " $ @ "및 $ @는 확장되지 않습니다 (즉, 제거됩니다).

#

10 진수의 위치 매개 변수 수로 확장됩니다.

?

가장 최근에 실행 된 전경 파이프 라인의 상태로 확장됩니다.

-

호출시에 지정된 현재 옵션 플래그, 내장 명령 세트 또는 쉘 자체에서 설정 한 옵션 ( -i 옵션과 같이)으로 확장됩니다.

$

쉘의 프로세스 ID로 확장됩니다. a () 서브 쉘에서는 서브 쉘이 아닌 현재 쉘의 프로세스 ID로 확장됩니다.

!

가장 최근에 실행 된 백그라운드 (비동기) 명령의 프로세스 ID로 확장됩니다.

0

쉘 또는 쉘 스크립트의 이름으로 확장됩니다. 이것은 쉘 초기화시 설정됩니다. bash 가 명령 파일로 호출되면, $ 0 은 해당 파일의 이름으로 설정됩니다. bash-c 옵션으로 시작되면 $ 0 은 실행될 문자열 뒤에있는 첫 번째 인수로 설정됩니다 (있는 경우). 그렇지 않으면 인수 0에 지정된 bash 를 호출하는 데 사용되는 파일 이름으로 설정됩니다.

_

쉘 시작시 인수 목록에서 전달 된대로 실행되는 쉘 또는 쉘 스크립트의 절대 파일 이름을 설정하십시오. 그런 다음 확장 후 이전 명령의 마지막 인수로 확장합니다. 또한 실행 된 각 명령의 전체 파일 이름으로 설정되어 해당 명령으로 내 보낸 환경에 배치됩니다. 메일을 확인할 때이 매개 변수는 현재 검사중인 메일 파일의 이름을 유지합니다.

셸 변수

다음 변수는 쉘에 의해 설정됩니다.

세게 때리다

bash 인스턴스를 호출하는 데 사용 된 전체 파일 이름으로 확장합니다.

BASH_VERSINFO

bash 의이 인스턴스에 대한 버전 정보를 보유하는 읽기 전용 배열 변수. 배열 구성원에 할당 된 값은 다음과 같습니다.

BASH_VERSINFO [ 0]

주 버전 번호 ( 릴리스 ).

BASH_VERSINFO [ 1]

부 버전 번호 ( 버전 ).

BASH_VERSINFO [ 2]

패치 수준.

BASH_VERSINFO [ 3]

빌드 버전.

BASH_VERSINFO [ 4]

릴리스 상태 (예 : beta1 ).

BASH_VERSINFO [ 5]

MACHTYPE 의 값입니다.

BASH_VERSION

bash 의이 인스턴스 버전을 설명하는 문자열로 확장합니다.

COMP_CWORD

COMP_LINE

현재 명령 행. 이 변수는 프로그래밍 가능한 완료 기능에 의해 호출 된 쉘 함수 및 외부 명령에서만 사용할 수 있습니다 (아래 프로그램 완료 참조).

COMP_POINT

COMP_WORDS

현재 명령 행의 개별 단어로 구성된 배열 변수 (아래의 배열 참조). 이 변수는 프로그램 가능한 완료 기능에 의해 호출 된 쉘 기능에서만 사용할 수 있습니다 (아래 프로그램 완료 참조).

DIRSTACK

디렉토리 스택의 현재 내용을 포함하는 배열 변수 (아래의 배열 참조)입니다. 디렉토리는 내장 디렉토리에 의해 표시된 순서대로 스택에 나타납니다. 이 배열 변수의 멤버에 할당하면 이미 스택에있는 디렉토리를 수정할 수 있지만 pushdpopd 내장 명령을 사용하여 디렉토리를 추가 및 제거해야합니다. 이 변수에 지정해도 현재 디렉토리는 변경되지 않습니다. DIRSTACK 이 설정되지 않은 경우 DIRSTACK 은 나중에 재설정되는 경우에도 특수한 특성을 잃습니다.

EUID

쉘 시작시 초기화 된 현재 사용자의 유효 사용자 ID로 확장합니다. 이 변수는 읽기 전용입니다.

FUNCNAME

현재 실행중인 셸 함수의 이름입니다. 이 변수는 쉘 함수가 실행 중일 때만 존재합니다. FUNCNAME 에 대한 지정은 효과가 없으며 오류 상태를 리턴합니다. FUNCNAME 이 설정되지 않은 경우, 나중에 재설정되는 경우에도 특수 특성이 유실됩니다.

여러 떼

현재 사용자가 구성원 인 그룹 목록을 포함하는 배열 변수입니다. GROUPS 에 대한 할당은 아무 효과가 없으며 오류 상태를 반환합니다. GROUPS 가 설정되어 있지 않은 경우, GROUPS 가 나중에 재설정되는 경우에도 특수 특성이 유실됩니다.

HISTCMD

현재 명령의 히스토리 번호 또는 히스토리 목록의 색인. HISTCMD 가 설정되어 있지 않으면 나중에 다시 설정하더라도 HISTCMD 는 특수한 속성을 잃습니다.

호스트 이름

현재 호스트의 이름으로 자동 설정됩니다.

호스트 유형

bash 가 실행중인 시스템 유형을 고유하게 설명하는 문자열로 자동 설정됩니다. 기본값은 시스템에 따라 다릅니다.

라이노

이 매개 변수가 참조 될 때마다 쉘은 스크립트 또는 함수 내에서 현재 순차 행 번호 (1로 시작)를 나타내는 10 진수로 대체합니다. 스크립트 또는 함수가 아닌 경우 대체 된 값이 의미있는 것으로 보장되지 않습니다. LINENO 가 설정되어 있지 않으면 나중에 다시 설정하더라도 LINENO 는 특수 속성을 잃어 버립니다.

MACHTYPE

bash 가 실행중인 시스템 유형을 표준 GNU cpu-company-system 형식으로 완전히 설명하는 문자열로 자동 설정됩니다. 기본값은 시스템에 따라 다릅니다.

OLDPWD

cd 명령으로 설정된 이전 작업 디렉토리.

OPTARG

getopts 내장 명령에 의해 처리 된 마지막 옵션 인수의 값 (아래 내장 명령 참조).

OPTIND

getopts 내장 명령으로 처리 할 다음 인수의 색인 (아래의 내장 명령 참조).

OSTYPE

bash 가 실행중인 운영 체제를 설명하는 문자열로 자동 설정됩니다. 기본값은 시스템에 따라 다릅니다.

지중해

가장 최근에 실행 된 포 그라운드 파이프 라인 (단일 명령 만 포함 할 수 있음)의 프로세스에서 종료 상태 값 목록을 포함하는 배열 변수 (아래의 배열 참조).

PPID

쉘의 부모 프로세스 ID. 이 변수는 읽기 전용입니다.

장애

cd 명령으로 설정된 현재 작업 디렉토리.

무작위

이 매개 변수가 참조 될 때마다 0에서 32767 사이의 임의의 정수가 생성됩니다. 난수 값의 순서는 RANDOM에 값을 할당하여 초기화 할 수 있습니다. RANDOM 이 설정되지 않은 경우 나중에 다시 설정 되더라도 RANDOM 의 특수 등록 정보가 손실됩니다.

댓글

인수가 제공되지 않은 경우 read 내장 명령으로 읽는 입력 행으로 설정하십시오.

이 매개 변수가 참조 될 때마다 쉘 호출이 리턴 된 이후의 시간 (초). 값이 SECONDS에 지정되면 후속 참조시 반환되는 값은 할당 이후 할당 된 값을 더한 시간 (초)입니다. SECONDS 가 설정되지 않은 경우 SECONDS 는 나중에 재설정되는 경우에도 특수한 속성을 잃습니다.

SHELLOPTS

콜론으로 구분 된 사용 가능한 쉘 옵션 목록. 목록의 각 단어는 세트 내장 명령에 대한 -o 옵션에 대한 유효한 인수입니다 (아래 쉘 조합 명령 참조). SHELLOPTS에 나타나는 옵션은 set -o 의해 on 으로보고 된 옵션입니다. bash 가 시작될 때이 변수가 환경에 있으면 시작 파일을 읽기 전에 목록의 각 쉘 옵션이 사용 가능하게됩니다. 이 변수는 읽기 전용입니다.

SHLVL

bash 의 인스턴스가 시작될 때마다 하나씩 증가합니다.

UID

쉘 시작시 초기화 된 현재 사용자의 사용자 ID로 확장합니다. 이 변수는 읽기 전용입니다.

다음 변수는 쉘에 의해 사용됩니다. 경우에 따라 bash 는 변수에 기본값을 지정합니다. 이러한 경우는 다음과 같습니다.

BASH_ENV

bash 가 쉘 스크립트를 실행할 때이 매개 변수가 설정되면, 그 값은 ~ / .bashrc 와 같이 쉘을 초기화하는 명령을 포함하는 파일 이름으로 해석됩니다. BASH_ENV 값은 파일 이름으로 해석되기 전에 매개 변수 확장, 명령 대체 및 산술 확장의 영향을받습니다. PATH 는 결과 파일 이름을 검색하는 데 사용되지 않습니다.

CDPATH

cd 명령의 검색 경로. 이것은 쉘이 cd 명령으로 지정된 대상 디렉토리를 찾는 콜론으로 구분 된 디렉토리 목록입니다. 샘플 값은 ". : ~ : / usr"입니다.

선택 목록을 인쇄 할 때 터미널 내장 너비를 결정하기 위해 내장 명령 선택에 사용됩니다. SIGWINCH를 수신하면 자동으로 설정됩니다.

구별

bash 가 프로그램 가능한 완료 기능에 의해 호출 된 쉘 함수에 의해 생성 된 가능한 완료를 읽는 배열 변수입니다 (아래의 프로그램 완료 참조).

FCEDIT

fc 내장 명령의 기본 편집기.

FIGNORE

파일 이름 완성을 수행 할 때 콜론으로 구분 된 접미사 목록입니다 (아래의 READLINE 참조). 접미사가 FIGNORE 에있는 항목 중 하나와 일치하는 파일 이름은 일치하는 파일 이름 목록에서 제외됩니다. 샘플 값은 ".o : ~"입니다.

GLOBIGNORE

pathname 확장으로 무시할 파일 이름 집합을 정의하는 콜론으로 구분 된 패턴 목록입니다. pathname 확장 패턴과 일치하는 파일 이름이 GLOBIGNORE 의 패턴 중 하나와 일치하면 일치 목록에서 제거됩니다.

HISTCONTROL

ignorespace 값으로 설정하면 공백 문자로 시작하는 행은 히스토리 목록에 입력되지 않습니다. ignoredups 값으로 설정하면 마지막 히스토리 행과 일치하는 행은 입력되지 않습니다. ignoreboth 값은 두 옵션을 결합합니다. 설정을 해제하거나 위의 값 이외의 값으로 설정하면 구문 분석기에서 읽은 모든 행이 HISTIGNORE 값에 따라 히스토리 목록에 저장됩니다. 이 변수의 기능은 HISTIGNORE에 의해 대체됩니다. 여러 줄로 된 복합 명령의 두 번째 및 후속 행은 테스트되지 않으며 HISTCONTROL 의 값과 관계없이 기록에 추가됩니다.

히스 파일

명령 내역이 저장된 파일의 이름입니다 (아래의 HISTORY 참조). 기본값은 ~ / .bash_history 입니다. 설정하지 않으면, 대화 형 쉘이 종료 될 때 명령 히스토리가 저장되지 않습니다.

HISTFILESIZE

히스토리 파일에 포함 된 최대 행 수. 이 변수에 값이 지정되면, 필요에 따라 해당 행 수를 초과하지 않도록 실행 기록 파일이 잘립니다. 기본값은 500입니다. 대화식 쉘이 종료 될 때 기록한 후에 히스토리 파일도이 크기로 잘립니다.

히스티 노어

히스토리 목록에 저장할 명령 행을 결정하는 데 사용되는 콜론으로 구분 된 패턴 목록. 각 패턴은 행의 시작 부분에 고정되어 있으며 전체 행과 일치해야합니다 (내재 된` * '가 추가되지 않음). 각 패턴은 HISTCONTROL 에 의해 지정된 검사가 적용된 후에 라인에 대해 테스트됩니다. 일반적인 쉘 패턴 일치 문자 외에도, ' & '는 이전 히스토리 행과 일치합니다. ` & '는 백 슬래시를 사용하여 이스케이프 될 수 있습니다. 매치를 시도하기 전에 백 슬래시가 제거됩니다. 여러 줄 복합 명령의 두 번째 및 후속 행은 테스트되지 않으며 HISTIGNORE 의 값과 관계없이 기록에 추가됩니다.

과장된

명령 히스토리에서 기억할 명령의 수 (아래 히스토리 참조). 기본값은 500입니다.

현재 사용자의 홈 디렉토리. cd 내장 명령의 기본 인수. 이 변수의 값은 물결표 확장을 수행 할 때도 사용됩니다.

HOSTFILE

쉘이 호스트 이름을 완료해야 할 때 읽어야하는 / etc / hosts 와 동일한 형식의 파일 이름을 포함합니다. 가능한 호스트 이름 완성 목록은 쉘이 실행 중일 때 변경 될 수 있습니다. 값이 변경된 후 호스트 이름 완성이 다음에 시도되면 bash 는 새 파일의 내용을 기존 목록에 추가합니다. HOSTFILE 이 설정되었지만 값이없는 경우 bash 는 가능한 호스트 이름 완료 목록을 얻기 위해 / etc / hosts 를 읽으려고 시도합니다. HOSTFILE 이 설정 해제되면 호스트 이름 목록이 지워집니다.

IFS

확장 후 단어 분할에 사용되며 read builtin 명령을 사용하여 줄을 단어로 나눕니다. 기본값은`` ''입니다.

IGNOREEOF

EOF 문자를받은 경우 대화식 쉘의 동작을 제어합니다. 설정 될 경우, 값은 bash가 종료되기 전에 입력 행의 첫 번째 문자로 입력해야하는 연속적인 EOF 문자의 수입니다. 변수가 있지만 숫자 값이 없거나 값이없는 경우 기본값은 10입니다. 존재하지 않으면 EOF 는 쉘 입력의 끝을 나타냅니다.

INPUTRC

readline 시작 파일의 파일 이름으로, ~ / .inputrc 의 기본값을 무시합니다 (아래의 READLINE 참조).

LANG

LC_로 시작하는 변수로 특별히 선택되지 않은 카테고리의 로케일 범주를 결정하는 데 사용됩니다.

LC_ALL

이 변수는 LANG 및 로케일 범주를 지정하는 기타 LC_ 변수의 값을 겹쳐 씁니다.

LC_COLLATE

이 변수는 경로 이름 확장 결과를 정렬 할 때 사용되는 정렬 순서를 결정하고 경로명 확장, 패턴 일치 내 범위 표현식, 등가 클래스 및 조합 시퀀스의 동작을 결정합니다.

LC_CTYPE

이 변수는 경로 이름 확장 및 패턴 일치 내에서 문자의 해석과 문자 클래스의 동작을 결정합니다.

LC_MESSAGES

이 변수는 앞에 $가 붙은 큰 따옴표로 묶인 문자열을 변환하는 데 사용되는 로켈을 결정합니다.

LC_NUMERIC

이 변수는 숫자 형식화에 사용되는 로케일 범주를 결정합니다.

윤곽

인쇄 선택 목록의 열 길이를 결정하기 위해 내장 명령 선택에 사용됩니다. SIGWINCH를 수신하면 자동으로 설정됩니다.

우편

이 매개 변수가 파일 이름으로 설정되고 MAILPATH 변수가 설정되지 않으면 bash 는 사용자에게 지정된 파일에 메일이 도착 했음을 알립니다.

MAILCHECK

메일을 bash 검사하는 빈도 (초)를 지정합니다. 기본값은 60 초입니다. 메일을 확인할 때가되면 쉘은 기본 프롬프트를 표시하기 전에이를 수행합니다. 이 변수가 설정되지 않았거나 0보다 크거나 같은 값으로 설정되지 않은 경우, 쉘은 메일 검사를 사용 불가능하게합니다.

메일 경로

메일을 확인할 콜론으로 구분 된 파일 이름 목록. 메일이 특정 파일에 도착했을 때 인쇄 할 메시지는 파일 이름과 메시지를`? '문자로 구분하여 지정할 수 있습니다. 메시지의 텍스트에서 사용될 때, $ _ 는 현재 메일 파일의 이름으로 확장됩니다. 예:

MAILPATH = '/ var / mail / bfox? "메일을 가지고 있습니다 :"~ / shell-mail? "$ _ has mail!"'

Bash 는이 변수의 기본값을 제공하지만 사용하는 사용자 메일 파일의 위치는 시스템에 따라 다릅니다 (예 : / var / mail / $ USER ).

OPTERR

값 1로 설정하면, bashgetopts 내장 명령 (아래의 내장 명령 참조)에 의해 생성 된 오류 메시지를 표시합니다. OPTERR 은 쉘이 호출되거나 쉘 스크립트가 실행될 때마다 1로 초기화됩니다.

통로

명령 검색 경로. 이것은 쉘이 명령을 찾는 콜론으로 구분 된 디렉토리 목록입니다 (아래의 COMMAND EXECUTION 참조). 기본 경로는 시스템에 따라 다르며 bash 를 설치하는 관리자가 설정합니다. 일반적인 값은``/ usr / gnu / bin : / usr / local / bin : / usr / ucb : / bin : / usr / bin :. ''입니다.

POSIXLY_CORRECT

bash 가 시작될 때이 변수가 환경에 있으면 쉘은 --posix 호출 옵션이 제공된 것처럼 시작 파일을 읽기 전에 posix 모드 로 들어갑니다. 쉘이 실행 중일 때 설정되면 bashset -o posix 명령이 실행 된 것처럼 posix 모드를 사용 가능하게 합니다 .

PROMPT_COMMAND

설정되면 각 기본 프롬프트를 실행하기 전에 값이 명령으로 실행됩니다.

PS1

이 매개 변수의 값은 확장되어 (아래의 PROMPTING 참조) 기본 프롬프트 문자열로 사용됩니다. 기본값은`` \ s- \ v \ $ ''입니다.

PS2

이 매개 변수의 값은 PS1에서 와 같이 확장되고 보조 프롬프트 문자열로 사용됩니다. 기본값은`` > ''입니다.

PS3

이 매개 변수의 값은 select 명령의 프롬프트로 사용됩니다 (위의 SHELL GRAMMAR 참조).

PS4

이 매개 변수의 값은 PS1 에서처럼 확장되며 실행 추적 중에 각 명령 bash 가 표시되기 전에 값이 인쇄됩니다. PS4 의 첫 번째 문자는 필요에 따라 여러 번 복제되어 여러 수준의 간접 지정을 나타냅니다. 기본값은`` + ''입니다.

시간 형식

이 매개 변수의 값은 시간 예약어가 접두사로 붙은 파이프 라인에 대한 시간 정보가 표시되는 방법을 지정하는 형식 문자열로 사용됩니다. % 문자는 시간 값 또는 기타 정보로 확장 된 이스케이프 시퀀스를 도입합니다. 이스케이프 시퀀스와 그 의미는 다음과 같습니다. 중괄호는 선택적 부분을 나타냅니다.

%%

리터럴 % .

% [ p ] [1] R

경과 시간 (초).

% [ p ] [l] U

사용자 모드에서 소비 한 CPU 초 수입니다.

% [ p ] [1] S

시스템 모드에서 사용 된 CPU 초 수.

%피

CPU 백분율 (% U + % S) / % R로 계산됩니다.

선택적 p 는 소수점 이하 자릿수의 수인 정밀도를 지정하는 숫자입니다. 0 값은 소수점이나 소수 부분을 출력하지 않습니다. 소수점 이하는 최대 세 자리까지 지정할 수 있습니다. p 가 3보다 큰 값은 3으로 변경됩니다. p 가 지정되지 않으면 값 3이 사용됩니다.

선택 사항 인 lMM m SS 형식의 분을 포함하여 더 긴 형식을 지정합니다. FF s. p 값은 분수가 포함되는지 여부를 결정합니다.

이 변수가 설정되지 않으면 bash$ '\ nreal \ t % 3lR \ nuser \ t % 3lU \ nsys % 3lS'값을 갖는 것처럼 작동 합니다. 값이 널이면 시간 정보가 표시되지 않습니다. 형식 문자열이 표시되면 후행 줄 바꿈이 추가됩니다.

TMOUT

0보다 큰 값으로 설정하면 TMOUT 은 기본 내장 읽기 시간 제한으로 처리됩니다. 터미널에서 입력이 들어오는 TMOUT 초 후에 입력이 도착하지 않으면 select 명령이 종료됩니다. 대화식 쉘에서, 값은 1 차 프롬프트를 발행 한 후 입력을 기다리는 시간 (초)으로 해석됩니다. 입력이 도착하지 않으면 Bash 는 해당 초를 기다린 후 종료됩니다.

auto_resume

이 변수는 쉘이 사용자 및 작업 제어와 상호 작용하는 방법을 제어합니다. 이 변수를 설정하면 리디렉션이없는 단일 단어 단순 명령이 기존 중지 된 작업의 재개를위한 후보로 처리됩니다. 모호성은 허용되지 않습니다. 입력 된. 자열로 시작하는 둘 이상의 작업이 있으면 가장 최근에 액세스 한 작업이 선택됩니다. 이 컨텍스트에서 중지 된 작업의 이름 은이를 시작하는 데 사용되는 명령 행입니다. exact 값으로 설정하면 제공된 문자열이 중지 된 작업의 이름과 정확하게 일치해야합니다. 하위 문자열로 설정하면 제공된 문자열이 중지 된 작업 이름의 하위 문자열과 일치해야합니다. 하위 문자열 값은 %? 작업 식별자 (아래의 작업 제어 참조). 다른 값으로 설정하면 제공된 문자열은 중지 된 작업 이름의 접두어 여야합니다. 이것은 % 작업 식별자와 유사한 기능을 제공합니다.

히스 카르

역사 확장과 토큰 화를 제어하는 ​​두 개 또는 세 개의 문자 (아래의 역사 확장 참조). 첫 번째 문자는 히스토리 확장 문자로, 히스토리 확장 의 시작을 알리는 문자이다 . '. 두 번째 문자는 빠른 대체 문자입니다.이 명령은 입력 된 이전 명령을 다시 실행하고 한 문자열을 다른 명령으로 대체하는 데 사용됩니다. 기본값은` ^ '입니다. 옵션의 3 번째의 문자는, 단어의 최초의 문자로서 발견되는 행의 나머지 (통상은` # ')를 나타내는 문자입니다. 기록 주석 문자는 행의 나머지 단어에 대한 기록 대체를 건너 뜁니다. 반드시 쉘 파서가 나머지 행을 주석으로 처리하도록하는 것은 아닙니다.

배열

Bash 는 1 차원 배열 변수를 제공합니다. 모든 변수는 배열로 사용할 수 있습니다. declare builtin은 명시 적으로 배열을 선언합니다. 배열의 크기에는 최대 제한이 없으며 멤버가 연속적으로 인덱싱되거나 할당되어야한다는 요구 사항도 없습니다. 배열은 정수를 사용하여 인덱스되며 0부터 시작합니다.

구문 이름 [ subscript ] = value 를 사용하여 변수가 할당되면 배열이 자동으로 만들어 집니다 . 아래 첨자 는 0보다 크거나 같은 숫자로 평가되어야하는 산술 식으로 처리됩니다. 명시 적으로 배열을 선언하려면 declare -a name을 사용하십시오 (아래 쉘 빌드 명령 참조). declare -a name [ subscript ]도 허용됩니다. 첨자 는 무시됩니다. declarereadonly 내장 명령을 사용하여 배열 변수에 대한 속성을 지정할 수 있습니다. 각 속성은 배열의 모든 멤버에 적용됩니다.

배열은 name = ( value 1 ... value n ) 형식의 복합 할당을 사용하여 할당됩니다. 여기서 각 은 [ subscript ] = string 형식 입니다. 문자열 만 필요합니다. 선택적 대괄호와 아래 첨자가 제공되면 해당 색인은에 할당됩니다. 그렇지 않으면 할당 된 요소의 인덱스는 명령문에 의해 할당 된 마지막 인덱스 + 1입니다. 인덱싱은 0부터 시작합니다. 이 구문은 내장 선언에 의해 허용됩니다. 개별 배열 요소는 위에서 소개 한 이름 [ subscript ] = value 구문을 사용하여 할당 할 수 있습니다.

unset 내장은 배열을 파괴하는 데 사용됩니다. unset name [ subscript ]는 인덱스 요소의 배열 요소를 소멸시킵니다. unset name , 여기서 name 은 배열 또는 unset name [ subscript ]입니다. 여기서 subscript* 또는 @ 이며 전체 배열을 제거합니다.

declare , localreadonly 기본 제공은 각각 -a 옵션을 사용하여 배열을 지정합니다. read 내장 명령은 -a 옵션을 사용하여 표준 입력에서 읽은 단어 목록을 배열에 할당합니다. 집합과 선언은 배열 값을 할당으로 재사용 할 수있는 방식으로 표시합니다.

확장

확장은 단어로 분리 된 후 명령 행에서 수행됩니다. 중괄호 확장 , 물결표 확장 , 매개 변수 및 변수 확장 , 명령 대체 , 산술 확장 , 단어 분리경로 이름 확장 과 같은 7 가지 확장이 수행됩니다.

확장 순서는 중괄호 확장, 물결표 확장, 매개 변수, 변수 및 산술 확장 및 명령 대체 (왼쪽에서 오른쪽으로 수행), 단어 분리 및 경로 이름 확장입니다.

이를 지원할 수있는 시스템에서는 추가 대체가 가능합니다 ( 프로세스 대체) .

가새 확장

중괄호 확장 은 임의의 문자열을 생성 할 수있는 메커니즘입니다. 이 메커니즘은 경로 이름 확장 과 유사하지만 생성 된 파일 이름이 존재하지 않아도됩니다. 중괄호를 확장 할 패턴은 선택 사항 인 프리앰블 의 형태를 취하고 괄호 쌍 사이에 쉼표로 구분 된 일련의 문자열이 이어지고 선택적 후행 스크립트가 이어집니다. 전치사는 중괄호 안에 포함 된 각 문자열에 접두사가 붙습니다. 그리고 포스트 스크립트는 결과 문자열 각각에 추가되어 왼쪽에서 오른쪽으로 확장됩니다.

가새 확장은 중첩 될 수 있습니다. 확장 된 각 문자열의 결과는 정렬되지 않습니다. 왼쪽에서 오른쪽 순서로 유지됩니다. 예를 들어, a { d, c, b } 는 'ade ace abe'로 확장됩니다.

중괄호 확장은 다른 확장 전에 수행되며 다른 확장에 특수한 문자는 결과에 보존됩니다. 그것은 엄격한 텍스트입니다. Bash 는 확장 문맥이나 중괄호 사이의 텍스트에 통어 해석을 적용하지 않습니다.

이 구조는 일반적으로 생성 될 문자열의 공통 접두사가 위의 예보다 긴 경우 약식으로 사용됩니다.

mkdir / usr / local / src / bash / {오래된, 새, dist, 버그}

또는

chown root /usr/{ucb/{ex,edit},lib/{ex?.*,how_ex}}

중괄호 확장은 sh의 이전 버전과의 약간의 비호 환성을 가져 옵니다 . sh 는 단어의 일부로 나타나는 경우 여는 중괄호 나 닫는 중괄호를 특별히 처리하지 않고 출력에 보존합니다. Bash 는 중괄호 확장의 결과로 단어에서 중괄호를 제거합니다. 예를 들어, sh파일 {1,2} 로 입력 된 단어는 출력에서 ​​동일하게 나타납니다. bash로 확장 한 후 동일한 단어가 file1 file2 로 출력됩니다. sh 와의 엄격한 호환성이 필요한 경우, + B 옵션을 사용하여 bash 를 시작하거나 set 명령에 + B 옵션을 사용하여 가새 확장을 비활성화하십시오 (아래 쉘 내장 명령 참조).

물결표 확장

단어가 따옴표로 묶이지 않은 물결표 문자 (` ~ ')로 시작하면 첫 번째 인용 부호가없는 슬래시 앞에 오는 모든 문자 (또는 인용 부호가없는 슬래시가없는 경우 모든 문자)는 틸드 - 접두사 로 간주됩니다. 틸드 - 접두사에있는 문자가 따옴표로 묶이지 않으면 틸드 뒤에 오는 틸드 - 접두어의 문자가 가능한 로그인 이름 으로 처리됩니다. 이 로그인 이름이 널 (NULL) 문자열이면 틸드는 쉘 매개 변수 HOME 의 값으로 대체됩니다. HOME 이 설정되지 않은 경우 쉘을 실행하는 사용자의 홈 디렉토리가 대신 대체됩니다. 그렇지 않으면 tilde-prefix가 지정된 로그인 이름과 연관된 홈 디렉토리로 바뀝니다.

틸드 - 접두사가`~ + '이면 셸 변수 PWD 의 값은 틸드 - 접두사를 대체합니다. 틸드 - 접두사가`~ - '이면 쉘 변수 OLDPWD 의 값이 설정되면이를 대체합니다. 틸드 - 접두사에있는 틸드 다음의 문자가 숫자 N 으로 구성되며, 선택적으로 접두사가 '+'또는 '-'인 경우 틸드 접두사는 디렉토리 스택의 해당 요소로 바뀝니다. 인수로 물결표 - 접두사로 호출 된 내장 명령에 의해. 틸드 - 접두사의 틸드 뒤에 나오는 문자가 앞에 '+'또는 '-'가없는 숫자로 구성되어 있으면 '+'로 간주됩니다.

로그인 이름이 유효하지 않거나 물결표 확장이 실패하면 단어는 변경되지 않습니다.

각 변수 할당은 : 또는 = 다음에 나오는 따옴표가없는 물결표가 있는지 확인합니다. 이 경우 물결표 확장도 수행됩니다. 결과적으로 PATH , MAILPATHCDPATH 에 할당 된 틸드가있는 파일 이름을 사용할 수 있으며 셸에서는 확장 된 값을 할당합니다.

매개 변수 확장

` $ '문자는 매개 변수 확장, 명령 대체 또는 산술 확장을 소개합니다. 확장 할 매개 변수 이름 또는 기호는 중괄호로 묶을 수 있습니다.이 중괄호는 선택적 요소이지만 확장 될 변수가 이름 바로 뒤에있는 문자에서 보호되어 이름의 일부로 해석 될 수 있습니다.

중괄호가 사용될 때, 일치하는 끝 중괄호는 백 슬래시 나 따옴표 붙은 문자열 내에서 이스케이프되지 않고 삽입 된 산술 확장, 명령 대체 또는 매개 변수 확장이 아닌 첫 번째` } '입니다.

매개 변수 의 값이 대체됩니다. 중괄호는 매개 변수가 둘 이상의 숫자가있는 위치 매개 변수이거나 매개 변수 다음에 이름의 일부로 해석되지 않는 문자가 오는 경우 필요합니다.

아래의 각 경우에서 단어 는 물결 확장, 매개 변수 확장, 명령 대체 및 산술 확장이 적용됩니다. 하위 문자열 확장을 수행하지 않을 때 bash 는 설정되지 않았거나 null 인 매개 변수를 테스트합니다. 콜론을 생략하면 설정되지 않은 매개 변수에 대해서만 테스트가 수행됩니다.

기본값 사용 . 매개 변수 가 설정되지 않았거나 널 (null)이면 단어 확장이 대체됩니다. 그렇지 않으면 매개 변수 의 값이 대체됩니다.

기본 값 할당 . 매개 변수 가 설정되지 않았거나 널인 경우 단어 확장이 매개 변수에 지정됩니다. 그런 다음 매개 변수 의 값이 대체됩니다. 이런 식으로 위치 매개 변수와 특수 매개 변수를 할당 할 수 없습니다.

Null 또는 Unset 인 경우 오류를 표시합니다 . 매개 변수 가 널 (null)이거나 설정되지 않은 경우 단어 확장 ( 단어 가없는 경우 해당 메시지에 대한 메시지)이 표준 오류에 기록되고 쉘이 대화식이 아닌 경우 종료됩니다. 그렇지 않으면 매개 변수 의 값이 대체됩니다.

대체 값 사용 . 파라미터 가 null 또는 설정되어 있지 않은 경우는 아무것도 치환되지 않습니다. 그렇지 않은 경우는, 단어 의 확장이 치환됩니다.

IFS 특수 변수의 첫 문자로 구분 된 이름이 prefix로 시작하는 변수의 이름으로 확장됩니다.

매개 변수 값의 문자 길이가 대체됩니다. 매개 변수* 또는 @ 이면 대치 된 값은 위치 매개 변수의 수입니다. parameter* 또는 @에 의해 첨자 화 된 배열 이름 인 경우 대치 된 값은 배열의 요소 수입니다.

pathname 확장과 마찬가지로 패턴이 생성되도록 단어 가 확장됩니다. 패턴이 parameter 값의 시작과 일치하면 확장 결과는 가장 짧은 일치 패턴 ( " # " '대소 문자) 또는 가장 긴 일치 패턴 ( " ## "대문자)이있는 매개 변수 의 확장 된 값입니다. '사례)가 삭제되었습니다. 매개 변수@ 또는 * 이면 패턴 제거 작업이 각 위치 매개 변수에 차례로 적용되고 확장은 결과 목록입니다. 매개 변수@ 또는 *로 첨자 된 배열 변수 인 경우 패턴 제거 작업이 배열의 각 멤버에 차례로 적용되고 확장은 결과 목록입니다.

pathname 확장과 마찬가지로 패턴이 생성되도록 단어 가 확장됩니다. 패턴이 매개 변수 의 확장 된 값의 후행 부분과 일치하면 확장 결과는 가장 짧은 패턴 ( " % "의 대소 문자) 또는 가장 길게 일치하는 패턴 ( " % "대 / 소문자)이있는 매개 변수 의 확장 된 값입니다. % '')를 삭제했습니다. 매개 변수@ 또는 * 이면 패턴 제거 작업이 각 위치 매개 변수에 차례로 적용되고 확장은 결과 목록입니다. 매개 변수@ 또는 *로 첨자 된 배열 변수 인 경우 패턴 제거 작업이 배열의 각 멤버에 차례로 적용되고 확장은 결과 목록입니다.

경로 이름 확장과 마찬가지로 패턴이 생성되도록 패턴 이 확장됩니다. 매개 변수 가 확장되고 해당 값에 대한 패턴 의 가장 긴 일치가 string 으로 대체됩니다. 첫 번째 형식에서는 첫 번째 일치 항목 만 바뀝니다. 두 번째 형식은 패턴의 모든 일치가 문자열 로 대체되도록 합니다 . 패턴#으로 시작하면, 매개 변수 의 확장 된 값의 시작 부분에서 일치해야합니다. 패턴%로 시작되면 매개 변수 의 확장 된 값의 끝에 일치해야합니다. string 이 널이면 패턴 일치가 삭제되고 / 다음 패턴 은 생략 될 수 있습니다. 매개 변수@ 또는 * 이면 대체 조작이 차례대로 각 위치 매개 변수에 적용되고 확장은 결과 목록입니다. 매개 변수@ 또는 *로 첨자가 붙은 배열 변수이면 대입 연산이 배열의 각 멤버에 차례로 적용되고 확장은 결과 목록입니다.

명령 대체

명령 대체를 사용하면 명령 출력을 사용하여 명령 이름을 바꿀 수 있습니다. 두 가지 형식이 있습니다.

$ ( 명령 )

또는

` 명령 `

Bash명령 을 실행하고 명령 대체를 명령의 표준 출력으로 대체하고 후행 줄 바꿈을 삭제하여 확장을 수행합니다. 포함 된 줄 바꿈은 삭제되지 않지만 단어 분리 중에 제거 될 수 있습니다. 명령 대체 $ (cat 파일 )은 동등하지만 빠른 $ (< file )로 대체 될 수 있습니다.

이전 스타일의 역 인용 부호 형식을 사용할 때 백 슬래시는 $ , ` 또는 \ 다음에 오는 경우를 제외하고는 문자 그대로의 의미를 유지합니다. 백 슬래시 앞에없는 첫 번째 역 인용 부호는 명령 대체를 종료합니다. $ ( command ) 형식을 사용할 때 괄호 사이의 모든 문자가 명령을 구성합니다. 아무도 특별하게 대우받지 않는다.

명령 대체는 중첩 될 수 있습니다. 역 따옴표로 묶은 양식을 사용할 때 중첩하려면 내부 역 따옴표를 백 슬래시로 이스케이프합니다.

대체가 큰 따옴표 안에 나타나면 단어 분리 및 경로 이름 확장이 결과에 수행되지 않습니다.

산술 확장

산술 확장을 사용하면 산술 표현식을 평가하고 결과를 대체 할 수 있습니다. 산술 확장 형식은 다음과 같습니다.

$ (( 표현식 ))

표현식 은 큰 따옴표 안에있는 것처럼 처리되지만 괄호 안의 큰 따옴표는 특별히 처리되지 않습니다. 표현식의 모든 토큰은 매개 변수 확장, 문자열 확장, 명령 대체 및 따옴표 제거를 거칩니다. 산술 대체는 중첩 될 수 있습니다.

평가는 산술 평가 아래에 나열된 규칙에 따라 수행됩니다 . expression 이 유효하지 않으면 bash 는 실패를 나타내는 메시지를 인쇄하고 대체가 발생하지 않습니다.

프로세스 대체

프로세스 대체 는 명명 된 파이프 ( FIFO )를 지원하는 시스템 또는 열린 파일의 이름을 지정하는 / dev / fd 메소드에서 지원됩니다. <( list ) 또는 > ( list ) 형식을 취합니다. 프로세스 목록 은 입력 또는 출력이 FIFO 또는 / dev / fd의 일부 파일에 연결되어 실행됩니다. 이 파일의 이름은 확장의 결과로 현재 명령에 인수로 전달됩니다. > ( 목록 ) 형식을 사용하면 파일에 쓰면 목록 입력이 제공 됩니다 . <( 리스트 ) 형식을 사용하는 경우, 인수로 전달 된 파일은 list 출력을 읽어야 합니다 .

사용 가능한 경우, 프로세스 대체는 매개 변수 W 변수 확장, 명령 대체 W 산술 확장과 동시에 수행됩니다.

단어 분리

쉘은 단어 분리에 대해 큰 따옴표 안에 나타나지 않은 매개 변수 확장, 명령 대체 및 산술 확장의 결과를 스캔합니다.

쉘은 IFS의 각 문자를 구분 기호로 취급하고 다른 확장 결과를 이러한 문자의 단어로 나눕니다. IFS 가 설정되지 않았거나 그 값이 정확히 이면 기본값입니다. IFS 문자의 모든 시퀀스는 단어를 구분하는 역할을합니다. IFS 에 기본값 이외의 값이 있으면 공백 문자가 IFS ( IFS 공백 문자)의 값인 한 공백 문자와 공백 문자의 순서는 단어의 시작과 끝에서 무시됩니다. 인접한 IFS 공백 문자와 함께 IFS 공백이 아닌 IFS의 문자는 필드를 구분합니다. 일련의 IFS 공백 문자도 구분 기호로 취급됩니다. IFS 의 값이 널이면 단어 분할이 발생하지 않습니다.

명시 적 널 인수 ( "" 또는 " ' )가 유지됩니다. 값이없는 매개 변수의 확장으로 인해 인용되지 않은 암시 적 null 인수가 제거됩니다. 값이없는 매개 변수가 큰 따옴표 안에 확장되면 null 인수가 반환되고 유지됩니다.

확장이 발생하지 않으면 분할이 수행되지 않습니다.

경로명 확장

단어 분리 후, -f 옵션이 설정되어 있지 않으면 bash는 각 단어에 * ,? 문자를 스캔합니다 . , [ . 이러한 문자 중 하나가 나타나면 해당 단어는 패턴으로 간주되며 패턴 과 일치하는 알파벳순으로 정렬 된 파일 이름 목록으로 바뀝니다. 일치하는 파일 이름이없고 쉘 옵션 nullglob 가 사용 불가능한 경우, 단어는 변경되지 않습니다. nullglob 옵션이 설정되어 있고 일치하는 항목이 없으면 단어가 제거됩니다. 셸 옵션 nocaseglob 가 활성화 된 경우 알파벳 문자의 대 / 소문자에 관계없이 일치가 수행됩니다. 경로명 확장을 위해 패턴을 사용할 때, 쉘 옵션 dotglob 가 설정되어 있지 않으면, 이름의 시작이나 슬래시 바로 뒤의 문자 ``. '' 가 명시 적으로 일치해야합니다. 경로 이름과 일치 할 때 슬래시 문자는 항상 명시 적으로 일치해야합니다. 다른 경우, ``. '' 문자는 특별히 다루어지지 않습니다. nocaseglob , nullglobdotglob 쉘 옵션에 대한 설명은 SHELL BUILTIN COMMANDS 아래의 shopt에 대한 설명을 참조하십시오.

GLOBIGNORE 셸 변수는 패턴과 일치하는 파일 이름 집합을 제한하는 데 사용될 수 있습니다. GLOBIGNORE 가 설정되면 GLOBIGNORE 의 패턴 중 하나와 일치하는 각 일치하는 파일 이름이 일치 목록에서 제거됩니다. GLOBIGNORE 가 설정되어 있어도 파일 이름 ``. ''``.. '' 는 항상 무시됩니다. 그러나 GLOBIGNORE 설정은 dotglob 쉘 옵션을 사용 가능하게하는 효과가 있으므로 "."로 시작하는 다른 모든 파일 이름은 일치합니다. ``. ''로 시작하는 파일 이름을 무시하는 오래된 동작을 얻으려면 GLOBIGNORE 의 패턴 중 하나 인 `. * ''만드십시오 . GLOBIGNORE 가 설정되지 않은 경우 dotglob 옵션이 비활성화됩니다.

패턴 매칭

아래에서 설명하는 특수 패턴 문자 이외의 패턴에 나타나는 문자는 모두 일치합니다. NUL 문자는 패턴에 나타나지 않을 수 있습니다. 특수 패턴 문자는 문자 그대로 일치해야하는 경우 따옴표로 묶어야합니다.

특수 패턴 문자의 의미는 다음과 같습니다.

*

널 문자열을 포함하여 모든 문자열과 일치합니다.

?

모든 단일 문자와 일치합니다.

[...]

둘러싸인 문자 중 하나와 일치합니다. 하이픈으로 구분 된 한 쌍의 문자는 범위 표현을 나타냅니다. 현재 로케일의 조합 순서와 문자 세트를 사용하여 두 문자 사이를 정렬하는 모든 문자가 일치합니다. 그 다음에 나오는 첫 번째 문자가 ! 또는 a ^ 다음에 묶이지 않은 문자는 매치됩니다. | 위 표현식의 문자 정렬 순서는 현재 로케일과 LC_COLLATE 쉘 변수의 값 (설정된 경우)에 의해 결정됩니다. A - 집합의 첫 번째 또는 마지막 문자로 포함하여 일치시킬 수 있습니다. A ] 는 집합의 첫 번째 문자로 포함하여 일치시킬 수 있습니다.

[] 내에서 문자 클래스[: class :] 구문을 사용하여 지정할 수 있습니다 . 여기서 class 는 POSIX.2 표준에 정의 된 다음 클래스 중 하나입니다.

alnum 알파 ascii 빈 cntrl 숫자 그래프 낮은 인쇄 punct 공간 상단 단어 xdigit
문자 클래스는 해당 클래스에 속하는 모든 문자와 일치합니다. 문자 클래스는 문자, 숫자 및 문자 _와 일치합니다.

[] 내에서 등가 클래스[ c =] 와 같은 식을 사용하여 지정 될 수 있습니다.이 문자는 같은 로케일로 정의 된 모든 문자를 문자 c 와 일치시킵니다.

[] 내에서 구문 [. 기호 .] 는 조합 기호 기호 와 일치합니다.

shopt 내장 함수를 사용하여 extglob 쉘 옵션을 활성화하면 여러 확장 패턴 일치 연산자가 인식됩니다. 다음 설명에서, 패턴 목록|로 분리 된 하나 이상의 패턴 목록입니다. . 복합 패턴은 다음 서브 패턴 중 하나 이상을 사용하여 형성 될 수있다 :

? ( 패턴 목록 )

주어진 패턴의 0 번 또는 1 번 일치시킵니다.

* ( 패턴 목록 )

주어진 패턴의 0 회 이상 일치

+ ( 패턴 목록 )

주어진 패턴의 하나 이상의 일치와 일치합니다.

@ ( 패턴 목록 )

지정된 패턴 중 하나와 정확히 일치합니다.

! ( 패턴 목록 )

주어진 패턴 중 하나를 제외한 모든 것을 일치시킵니다.

따옴표 제거

이전 확장 후에 위의 확장 중 하나에서 발생하지 않은 \ , '" 문자의 인용되지 않은 모든 항목은 제거됩니다.

리디렉션

명령이 실행되기 전에 쉘에서 해석 한 특수 표기법을 사용하여 입출력을 재 지정할 수 있습니다. 리디렉션은 현재 쉘 실행 환경에서 파일을 열고 닫는 데 사용할 수도 있습니다. 다음 리디렉션 연산자는 간단한 명령 내에서 선행하거나 나타날 수 있으며 명령 뒤에 올 수 있습니다. 리디렉션은 왼쪽에서 오른쪽으로 나타나는 순서대로 처리됩니다.

다음 설명에서 파일 설명자 번호가 생략되고 리디렉션 연산자의 첫 번째 문자가 < 인 경우 리디렉션은 표준 입력 (파일 설명자 0)을 참조합니다. 리디렉션 연산자의 첫 문자가 > 인 경우 리디렉션은 표준 출력 (파일 설명자 1)을 나타냅니다.

다음 설명에서 리디렉션 연산자를 따르는 단어는 달리 언급하지 않는 한 중괄호 확장, 물결 확장, 매개 변수 확장, 명령 대체, 산술 확장, 따옴표 제거, 경로 이름 확장 및 단어 분할이 적용됩니다. 하나 이상의 단어로 확장되면 bash 는 오류를보고합니다.

리디렉션 순서는 중요합니다. 예를 들어, 명령

ls > dirlist 2 > & 1

표준 출력과 표준 오류 모두를 파일 dirlist로 보내며 , 명령은

ls 2 > & 1 > dirlist

표준 출력이 dirlist 로 경로 재 지정되기 전에 표준 오류가 표준 출력으로 복제 되었기 때문에 표준 출력만을 파일 dirlist로 보냅니다.

Bash 는 다음 표에 설명 된 것처럼 리다이렉션에 사용될 때 특별히 여러 파일 이름을 처리합니다.

/ dev / fd / fd

fd 가 유효한 정수이면 파일 설명자 fd 가 복제됩니다.

/ dev / stdin

파일 설명자 0이 복제됩니다.

/ dev / stdout

파일 설명자 1이 복제되었습니다.

/ dev / stderr

파일 설명자 2가 복제됩니다.

/ dev / tcp / host / port

host 가 유효한 호스트 이름 또는 인터넷 주소이고 port 가 정수 포트 번호 또는 서비스 이름 인 경우 bash 는 해당 소켓에 대한 TCP 연결을 시도합니다.

/ dev / udp / host / port

host 가 유효한 호스트 이름 또는 인터넷 주소이고 port 가 정수 포트 번호 또는 서비스 이름 인 경우 bash 는 해당 소켓에 대한 UDP 연결을 열려고 시도합니다.

파일을 열거 나 만들지 않으면 리디렉션이 실패하게됩니다.

입력 방향 재 지정

입력을 재 지정하면 단어 의 확장으로 인해 생성 된 이름의 파일이 파일 설명자 n 에서 읽히 도록 열리 며, n 이 지정되지 않으면 표준 입력 (파일 설명자 0)이됩니다.

입력을 리디렉션하는 일반적인 형식은 다음과 같습니다.

[ n ] < 단어

출력 방향 재 지정

출력을 재 지정하면 단어 의 확장으로 인해 생성 된 파일의 이름이 파일 설명자 n 에 쓰여 지며 , n 이 지정되지 않으면 표준 출력 (파일 설명자 1)이됩니다. 파일이 존재하지 않으면 생성됩니다. 존재하지 않으면 크기가 0으로 절단됩니다.

출력 방향 재 지정을위한 일반적인 형식은 다음과 같습니다.

[ n ] > 단어

리디렉션 연산자가 > 이고 내장 된 집합에 대한 noclobber 옵션이 활성화 된 경우 단어 확장으로 인해 이름이 지정된 파일이 일반 파일 인 경우 리디렉션이 실패합니다. 리디렉션 연산자가 > | 인 경우 또는 리다이렉션 연산자가 > 이고 set 내장 명령에 대한 noclobber 옵션이 활성화되어 있지 않으면 word로 명명 된 파일이 있더라도 리디렉션이 시도됩니다.

재 지정 출력 추가

이 f}으로 b 력 f 향 재지 정은 파일 설명자 n 에 추가하기 위해 열리는 단어 의 확장으로 인해 이름을 갖는 파일 또는 n 이 지정되지 않은 경우 표준 출력 (파일 설명자 1)을 야기합니다. 파일이 존재하지 않으면 생성됩니다.

출력을 추가하는 일반적인 형식은 다음과 같습니다.

[ n ] >> 단어

표준 출력 및 표준 오류 리디렉션

Bash 는 표준 출력 (파일 설명자 1)과 표준 오류 출력 (파일 설명자 2)이이 구조로 된 단어 의 확장명 인 파일로 리디렉션되도록합니다.

표준 출력과 표준 오류를 리디렉션하는 두 가지 형식이 있습니다.

&> 단어

> 단어 ( & word)

두 가지 형식 중 첫 번째 형식이 선호됩니다. 이것은 의미 론적으로 동일하다.

> 단어 2 > & 1

여기에 문서

이 유형의 재지 정은 단어를 포함하는 행 (뒤 공 i이없는)이 보일 때까지 쉘이 현재 소스에서 입력을 읽도록 지시합니다. 그 지점까지 읽은 모든 행은 명령의 표준 입력으로 사용됩니다.

here-documents의 형식은 다음과 같습니다.

<< [ - ] 여기에 단어 - 문서 분리 문자

단어 에 대해서는 매개 변수 확장, 명령 대체, 산술 확장 또는 경로 이름 확장이 수행되지 않습니다. 단어에 있는 문자가 인용되면 구분 기호단어에 대한 인용 부호 제거의 결과이며 here- 문서의 행은 확장되지 않습니다. 단어 가 인용되지 않으면 here-document의 모든 행은 매개 변수 확장, 명령 대체 및 산술 확장이 적용됩니다. 후자의 경우, 문자 시퀀스 \ 은 무시되고 문자 \ , $` 를 인용 부호로 사용해야합니다.

리디렉션 연산자가 << - 이면 선행하는 모든 탭 문자는 입력 행과 분리 문자가 포함 행에서 제거됩니다. 이렇게하면 쉘 스크립트 내의 here-documents를 자연스럽게 들여 쓰기 할 수 있습니다.

여기 문자열

이 문서의 변형은 형식은 다음과 같습니다.

<<< 단어

단어 가 확장되어 표준 입력의 명령에 제공됩니다.

파일 설명자 복제

리다이렉션 연산자

[ n ] <& word

입력 파일 설명자를 복제하는 데 사용됩니다. 단어 가 하나 이상의 자릿수로 확장되면 n 으로 표시된 파일 설명자가 해당 파일 설명 자의 복사본이됩니다. word 의 자릿수가 입력 용으로 열린 파일 설명자를 지정하지 않으면 방향 재 지정 오류가 발생합니다. word- 평가되면 파일 설명자 n 이 닫힙니다. n을 지정하지 않으면 표준 입력 (파일 설명자 0)이 사용됩니다.

연산자

[ n ] > & 단어

출력 파일 설명자를 복제하는 것과 유사하게 사용됩니다. n을 지정하지 않으면 표준 출력 (파일 설명자 1)이 사용됩니다. word 의 자릿수가 출력을 위해 열린 파일 디스크립터를 지정하지 않으면 재 지정 오류가 발생합니다. 특수한 경우에 n 이 생략되고 word 가 하나 이상의 숫자로 확장되지 않으면 앞에서 설명한대로 표준 출력과 표준 오류가 리디렉션됩니다.

파일 설명자 이동

리다이렉션 연산자

[ n ] <& digit -

파일 설명자 숫자 를 파일 설명자 n 으로 이동 시키거나 n 이 지정되지 않은 경우 표준 입력 (파일 설명자 0)으로 이동합니다. digitn 으로 복제 된 후 닫힙니다.

마찬가지로 리디렉션 연산자

[ n ] > & 숫자 -

파일 설명자 숫자 를 파일 설명자 n 으로 이동 시키거나 n 이 지정되지 않은 경우 표준 출력 (파일 설명자 1)으로 이동합니다.

읽기 및 쓰기 용 파일 설명자 열기

리다이렉션 연산자

[ n ] <> 단어

파일 확장자가 n 인 파일을 파일 설명자 n 에서 읽기 및 쓰기를 위해 열거 나 n을 지정하지 않은 경우 파일 설명자 0에서 열도록합니다. 파일이 없으면 파일이 작성됩니다.

외계인

별칭을 사용하면 간단한 명령의 첫 단어로 사용될 때 문자열을 단어로 대체 할 수 있습니다. 셸은 별칭unalias 기본 명령을 사용하여 설정 및 해제 할 수있는 별칭 목록을 유지 관리합니다 (아래의 SHELL BUILTIN COMMANDS 참조). 따옴표로 묶지 않으면 각 명령의 첫 번째 단어에 별칭이 있는지 확인합니다. 그렇다면 그 단어는 별칭의 텍스트로 대체됩니다. 별칭 이름과 대체 텍스트에는 위에 나열된 메타 문자를 포함하여 유효한 쉘 입력이 포함될 수 있지만 별칭 이름에는 =가 포함될 수 없습니다. 대체 텍스트의 첫 번째 단어는 별칭에 대해 테스트되지만 확장되는 별칭과 동일한 단어는 두 번 확장되지 않습니다. 예를 들어 lsls -F로 별명을 지정할 수 있으며 bash 는 대체 텍스트를 재귀 적으로 확장하려고하지 않음을 의미합니다. 별명 값의 마지막 문자가 공 i 인 경우 , 별명 다음의 다음 명령 단어도 별명 확장에 대해 점검됩니다.

별명은 alias 명령으로 작성되고 나열되며 unalias 명령으로 제거됩니다.

대체 텍스트에 인수를 사용하는 메커니즘은 없습니다. 인수가 필요한 경우 셸 함수를 사용해야합니다 (아래 함수 참조).

shopt를 사용하여 expand_aliases 셸 옵션을 설정하지 않으면 셸이 대화 형이 아닌 경우 별칭이 확장되지 않습니다 (아래 SHELL BUILTIN COMMAND 아래의 shopt 설명 참조).

별칭 정의 및 사용과 관련된 규칙은 다소 혼란 스럽습니다. Bash 는 해당 행의 명령을 실행하기 전에 항상 하나 이상의 완전한 입력 행을 읽습니다. 별칭은 명령을 읽을 때 확장되며 실행될 때 확장되지 않습니다. 따라서 다른 명령과 동일한 줄에 나타나는 별칭 정의는 다음 입력 줄을 읽을 때까지 적용되지 않습니다. 해당 행의 별명 정의 다음에 나오는 명령은 새 별명의 영향을받지 않습니다. 이 동작은 함수가 실행될 때도 문제가됩니다. 별칭은 함수 정의가 읽힐 때 확장되며 함수 정의는 복합 명령이기 때문에 함수가 실행될 때 확장되지 않습니다. 따라서 함수에 정의 된 별칭은 해당 함수가 실행될 때까지 사용할 수 없습니다. 안전을 기하기 위해 항상 별칭 정의를 별도의 줄에 넣고 복합 명령에 별칭 을 사용하지 마십시오.

거의 모든 목적을 위해 별명은 쉘 기능으로 대체됩니다.

기능

SHELL GRAMMAR 에서 위에 설명 된대로 정의 된 쉘 함수는 나중에 실행하기 위해 일련의 명령을 저장합니다. 셸 함수의 이름이 간단한 명령 이름으로 사용되면 해당 함수 이름과 관련된 명령 목록이 실행됩니다. 함수는 현재 셸의 컨텍스트에서 실행됩니다. 쉘 스크립트를 해석하는 새로운 프로세스가 생성되지 않습니다 (쉘 스크립트의 실행과 대조). 함수가 실행될 때 함수에 대한 인수는 실행 중 위치 매개 변수가됩니다. 특수 매개 변수 # 가 변경 사항을 반영하도록 업데이트됩니다. 위치 매개 변수 0은 변경되지 않습니다. FUNCNAME 변수는 함수가 실행되는 동안 함수의 이름으로 설정됩니다. 셸 실행 환경의 다른 모든 측면은 함수와 호출자간에 동일하지만 DEBUG 트랩 (아래 SHELL BUILTIN COMMAND 아래 내장 된 트랩 설명 참조)이 함수에 추적 특성이 제공되지 않는 한 상속되지 않습니다 아래의 내장 선언에 대한 설명 참조).

함수의 로컬 변수는 로컬 내장 명령으로 선언 할 수 있습니다. 일반적으로 변수와 그 값은 함수와 호출자간에 공유됩니다.

내장 명령 반환 이 함수에서 실행되면 함수가 완료되고 함수 호출 후 다음 명령으로 실행이 다시 시작됩니다. 함수가 완료되면 위치 매개 변수와 특수 매개 변수 # 의 값은 함수가 실행되기 전의 값으로 복원됩니다.

함수 이름 및 정의는 declare 또는 typeset 내장 명령에 -f 옵션과 함께 나열 될 수 있습니다. 선언 하거나 typeset 하는 -F 옵션은 함수 이름 만 나열합니다. 서브 쉘이 자동으로 내장 쉘에 -f 옵션으로 정의되도록 함수를 익스포트 할 수 있습니다.

함수는 재귀적일 수 있습니다. 재귀 호출 수에는 제한이 없습니다.

산술 평가

셸을 사용하면 특정 상황에서 산술 표현식을 평가할 수 있습니다 ( let 내장 명령 및 산술 확장 참조 ). 평가는 0으로 나눈 값이 오류로 표시되고 오버플로가 있는지 확인하지 않고 고정 너비 정수로 수행됩니다. 연산자와 우선 순위 및 조합은 C 언어와 동일합니다. 다음 연산자 목록은 동등 우선 순위 연산자로 그룹화됩니다. 레벨은 우선 순위가 낮은 순서대로 나열됩니다.

id ++ id -

변수 후 증가 및 후 감소

++ id - id

변수 사전 증가 및 사전 감소

- +

단항 마이너스 및 플러스

! ~ ~

논리 및 비트 부정

**

지수화

* / %

곱셈, 나눗셈, 나머지

+ -

덧셈, 뺄셈

<< >>

왼쪽 및 오른쪽 비트 시프트

<=> = <>

비교

==! =

평등과 불평등

&

비트 AND

^

비트 배타적 OR

|

비트 OR

&&

논리적 AND

||

논리 OR

expr ? expr : expr

조건부 평가

= * = / = % = + = - = << = >> = & = ^ = = =

할당

expr1 , expr2

콤마

쉘 변수는 피연산자로 사용할 수 있습니다. 표현식이 평가되기 전에 매개 변수 확장이 수행됩니다. 표현식 내에서 쉘 변수는 매개 변수 확장 구문을 사용하지 않고 이름으로 참조 될 수도 있습니다. 변수의 값은 참조 될 때 산술 표현식으로 평가됩니다. 쉘 변수는 표현식에서 사용하기 위해 정수 속성을 사용할 필요가 없습니다.

앞에 0이있는 상수는 8 진수로 해석됩니다. 선행하는 0x 또는 0X는 16 진수를 나타냅니다. 그렇지 않으면 숫자는 [ base # ] n 형식을 취합니다. 여기서 base 는 산술 자료를 나타내는 2에서 64 사이의 십진수이며, n 은 해당 기준의 숫자입니다. base # 가 생략되면 base 10이 사용됩니다. 9보다 큰 숫자는 소문자, 대문자, @ 및 _ 순으로 표시됩니다. 기준 이 36보다 작거나 같으면 소문자와 대문자는 10에서 35 사이의 숫자를 나타낼 수 있도록 상호 교환하여 사용할 수 있습니다.

연산자는 우선 순위에 따라 평가됩니다. 괄호 안의 하위 표현식이 먼저 평가되고 위의 우선 순위 규칙보다 우선 적용될 수 있습니다.

조건식

조건부 표현식은 [[ 복합 명령, 테스트[ 내장 명령]에서 파일 속성을 테스트하고 문자열 및 산술 비교를 수행하는 데 사용됩니다. 표현식은 다음 단항 또는 2 진 원색에서 형성됩니다. 1 차 원 중 하나에 대한 파일 인수가 / dev / fd / n 형식 인 경우 , 파일 설명자 n 이 점검됩니다. 하나의 기본 파일에 대한 파일 인수가 / dev / stdin , / dev / stdout 또는 / dev / stderr 중 하나 인 경우 파일 설명자 0, 1 또는 2가 각각 선택됩니다.

- 파일

파일 이 존재하면 참.

-b 파일

파일 이 존재하고 블록 특수 파일 인 경우, 참입니다.

-c 파일

파일 이 존재 해, 문자 특수 파일 인 경우는 true

-d 파일

파일 이 존재 해, 디렉토리 인 경우는 true

-e 파일

파일 이 존재하면 참.

-f 파일

파일 이 존재하고 일반 파일이면 true입니다.

-g 파일

파일 이 있고 set-group-id이면 참입니다.

-h 파일

파일 이 존재하고 심볼릭 링크 인 경우 true입니다.

-k 파일

파일 이 존재하고``sticky ''비트가 설정되면 true.

-p 파일

파일 이 존재 해, 이름 첨부 파이프 (FIFO) 인 경우는 true

-r 파일

파일 이 존재 해, 읽을 수있는 경우는 true

-s 파일

파일 이 존재 해, 사이즈가 제로보다 큰 경우는 true

-t fd

파일 기술자 fd 가 열려있어, 단말을 참조하고있는 경우는 true

-u 파일

파일 이 존재하고 그것의 set-user-id 비트가 설정되면 참.

-w 파일

파일 이 존재 해, 기입 해 가능한 경우는 true

-x 파일

파일 이 존재하고 실행 가능하면 참.

-O 파일

파일 이 존재하고 유효 사용자 ID가 소유하고 있으면 true입니다.

-G 파일

파일 이 존재 해, 유효한 그룹 ID가 소유하고있는 경우는 true

-L 파일

파일 이 존재하고 심볼릭 링크 인 경우 true입니다.

-S 파일

파일 이 존재 해 소켓 인 경우는 true

-N 파일

마지막으로 읽은 이후에 파일 이 있고 수정 된 경우 true입니다.

file1 - NT2 파일

file1file2 보다 새로운 (수정 날짜에 따라) 경우 또는 file1 이 있고 file2가없는 경우 true입니다.

file1 - ot 파일 2

file1file2 보다 오래된 경우 또는 file2 가 있고 file1 이없는 경우 True입니다.

파일 1 -ef 파일 2

file1file2 가 동일한 장치 및 inode 번호를 참조하면 참입니다.

-o optname

쉘 옵션 optname 이 사용 가능하면 참입니다. 아래의 내장 세트 에 대한 -o 옵션에 대한 설명 아래의 옵션 목록을 참조하십시오.

-z 문자열

string 의 길이가 제로의 경우는 true

-n string

캐릭터 라인 의 길이가 제로가 아닌 경우는 true

string1 == string2

캐릭터 라인이 동일한 경우는 true 엄격한 POSIX 준수를 위해서는 == 대신 == 를 사용할 수 있습니다.

string1 ! = string2

문자열이 같지 않으면 True입니다.

string1 < string2

현재의 로케일에서 string1이 사전 식으로 문자열 2를 사전 식 정렬하는 경우 참입니다.

string1 > string2

현재의 로케일에서 string2가 사전 적으로 문자열 2와 정렬 된 경우 참입니다.

arg1 OP arg2

OP-eq , -ne , -lt , -le , -gt 또는 -ge 중 하나입니다. 이 산술 이항 연산자는 arg1arg2 와 같거나 같지 않거나 작거나 같거나 작거나 같거나 크거나 같고 arg2 와 같거나 큰 경우 true를 반환합니다. Arg1arg2 는 양의 정수 또는 음의 정수일 수 있습니다.

간단한 명령 확장

간단한 명령이 실행되면 쉘은 왼쪽에서 오른쪽으로 다음 확장, 할당 및 리디렉션을 수행합니다.

1. 파서가 변수 할당 (명령 이름 앞의 단어)과 리디렉션으로 표시 한 단어는 나중에 처리하기 위해 저장됩니다.

2. 변수 할당이나 리디렉션이 아닌 단어가 확장됩니다. 확장 후에 단어가 남아 있으면 첫 단어가 명령의 이름이되고 나머지 단어는 인수가됩니다.

3. 방향 전환은 위에서 설명한대로 방향 전환에서 수행됩니다.

4. 각 변수 할당에서 = 뒤에있는 텍스트는 변수에 할당되기 전에 물결 확장, 매개 변수 확장, 명령 대체, 산술 확장 및 인용 제거를 거칩니다.

명령 이름이 없으면 변수 지정이 현재 쉘 환경에 영향을줍니다. 그렇지 않으면 변수가 실행 된 명령의 환경에 추가되고 현재 쉘 환경에는 영향을 미치지 않습니다. 할당 중 하나가 읽기 전용 변수에 값을 지정하려고 시도하면 오류가 발생하고 명령은 0이 아닌 상태로 종료됩니다.

명령 이름이 없으면 리디렉션이 수행되지만 현재 쉘 환경에는 영향을주지 않습니다. 리디렉션 오류로 인해 명령이 0이 아닌 상태로 종료됩니다.

확장 후 명령 이름이 남아있는 경우 실행은 다음과 같이 진행됩니다. 그렇지 않으면 명령이 종료됩니다. 확장 중 하나에 명령 대체가 포함 된 경우, 명령의 종료 상태는 마지막으로 수행 된 명령 대체의 종료 상태입니다. 명령 대체가 없으면 명령은 0 상태로 종료됩니다.

명령 실행

명령이 단어로 분리 된 후 간단한 명령과 옵션 인수 목록이 생성되면 다음 조치가 취해집니다.

명령 이름에 슬래시가 포함되어 있지 않으면, 쉘은 슬래시를 찾으려고 시도합니다. 그 이름으로 쉘 함수가 존재한다면, 함수는 위에서 설명한 것처럼 함수에서 호출됩니다. 이름이 함수와 일치하지 않으면, 쉘은 쉘 내장 명령리스트에서 이름을 탐색합니다. 일치하는 것이 있으면 해당 기본 제공이 호출됩니다.

이름이 쉘 함수 또는 내장 함수가 아니며 슬래시가없는 경우 bashPATH 의 각 요소에서 해당 이름의 실행 파일이 들어있는 디렉토리를 검색합니다. Bash 는 해시 테이블을 사용하여 실행 파일의 전체 경로 이름을 기억합니다 (아래 SHELL BUILTIN COMMUNICATION의 해시 참조). PATH 에있는 디렉토리의 전체 검색은 명령이 해시 테이블에서 발견되지 않는 경우에만 수행됩니다. 검색에 실패하면 쉘은 오류 메시지를 인쇄하고 종료 상태 127을 리턴합니다.

검색이 성공하거나 명령 이름에 하나 이상의 슬래시가 있으면 쉘은 별도의 실행 환경에서 명명 된 프로그램을 실행합니다. 인수 0은 주어진 이름으로 설정되고, 명령에 대한 나머지 인수는 제공된 인수 (있는 경우)로 설정됩니다.

파일이 실행 가능 형식이 아니기 때문에이 실행이 실패하고 파일이 디렉토리가 아닌 경우 셸 스크립트 , 즉 셸 명령이 포함 된 파일로 간주됩니다. 서브 쉘은 그것을 실행하기 위해 생성됩니다. 이 서브 쉘은 자신을 다시 초기화하므로, 쉘 ( SHELL BUILTIN COMMANDS 아래의 해시 참조)이 기억하는 명령의 위치가 하위에 의해 유지된다는 점을 제외하고는 새로운 쉘이 스크립트를 처리하기 위해 호출 된 것처럼 효과가 발생합니다.

프로그램이 #!으로 시작하는 파일 인 경우 . 첫 번째 줄의 나머지 부분은 프로그램에 대한 인터프리터를 지정합니다. 쉘은이 실행 형식을 직접 처리하지 않는 운영 체제에서 지정된 인터프리터를 실행합니다. 인터프리터에 대한 인수는 프로그램의 첫 번째 줄에있는 인터프리터 이름 다음에 오는 단일 선택적 인수와 그 뒤에 프로그램의 이름, 명령 인수 (있는 경우)로 구성됩니다.

실행 환경 명령

셸에는 다음과 같은 실행 환경 이 있습니다.

* 호출시 쉘이 상속 한 파일을 엽니 다. exec 내장 명령에 제공된 리디렉션으로 수정됩니다.

cd , pushd 또는 popd 로 설정된 현재 작업 디렉토리 또는 호출시 쉘이 상속

* umask가 설정하거나 쉘의 부모로부터 상속 된 파일 생성 모드 마스크

트랩에 의해 설정된 현재 트랩

변수 할당에 의해 설정 되거나 환경에서 쉘의 부모로부터 설정 되거나 상속 된 쉘 매개 변수

* 실행 중에 정의되거나 환경에서 쉘의 부모로부터 상속 된 쉘 함수

* 호출시 활성화 된 옵션 (기본값 또는 명령 줄 인수 사용) 또는 설정

* shopt에 의해 활성화 된 옵션

* alias로 정의 된 쉘 별칭

* 백그라운드 작업의 다양한 프로세스 ID, $$ 의 값 및 $ PPID 의 값

내장 함수 나 셸 함수가 아닌 단순 명령이 실행될 때는 다음과 같은 별도의 실행 환경에서 호출됩니다. 별도로 언급하지 않는 한, 값은 쉘에서 상속됩니다.

* 셸의 열린 파일과 명령의 리디렉션에 의해 지정된 모든 수정 및 추가

* 현재 작업 디렉토리

* 파일 생성 모드 마스크

* export를 위해 표시된 쉘 변수들, 환경에 전달 된 명령을 위해 export 된 변수들

쉘에 의해 캐치 된 트랩은 쉘의 부모로부터 상속 된 값으로 재설정되고 쉘에 의해 무시 된 트랩은 무시됩니다

이 별도 환경에서 호출 된 명령은 쉘의 실행 환경에 영향을 줄 수 없습니다.

명령 대체 및 비동기 명령은 쉘 환경에서 중복 된 서브 쉘 환경에서 호출됩니다. 단, 쉘에 의해 캐치 된 트랩은 쉘이 호출시 상위에서 상속 한 값으로 재설정됩니다. 파이프 라인의 일부로 호출되는 내장 명령은 또한 서브 쉘 환경에서 실행됩니다. 서브 쉘 환경에 대한 변경은 쉘의 실행 환경에 영향을 줄 수 없습니다.

명령 뒤에 &가오 고 작업 제어가 사용 중이 아닌 경우 명령의 기본 표준 입력은 빈 파일 / dev / null 입니다. 그렇지 않으면, 호출 된 명령은 호출 쉘의 파일 설명자를 경로 재 지정에 의해 수정 된 것으로 상속합니다.