답변:
괄호는 bash의 서브 쉘을 나타냅니다. man bash
페이지 를 인용하려면 :
(list) list is executed in a subshell environment (see COMMAND
EXECUTION ENVIRONMENT below). Variable assignments and builtin
commands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
여기서 a list
는 일반적인 명령 시퀀스입니다.
이것은 실제로 이식성이 뛰어나지 만 그다지 구체적이지 않습니다 bash
. POSIX 쉘 명령 언어 사양은 에 대한 다음 설명이 (compound-list)
구문을 :
서브 쉘 환경에서 복합 목록 을 실행하십시오 . Shell Execution Environment를 참조하십시오 . 환경에 영향을주는 변수 할당 및 기본 제공 명령은 목록이 완료된 후에도 유효하지 않습니다.
$()
과 ()
?
$()
명령 대체이며 하위 ()
쉘입니다. 둘 다 명령을 실행하지만 차이점은 출력에 발생합니다. 이름보다 기호를 검색하기가 훨씬 쉽습니다. 참조 unix.stackexchange.com/q/213530/9537
괄호 안에 포함 된 명령 목록 은 서브 쉘로 실행됩니다.
서브 쉘의 변수는 서브 쉘의 코드 블록 외부에 표시되지 않습니다. 상위 프로세스, 서브 쉘을 시작한 쉘에 액세스 할 수 없습니다. 이들은 사실상 지역 변수입니다.
Linuxtopia-20 장. 서브 쉘을 참조하십시오 .