명령줄에서 괄호는 어떻게 해석되나요?

명령줄에서 괄호는 어떻게 해석되나요?

설정 방법을 읽는 동안 grub다음 두 가지 구문 중 하나를 사용해야 한다는 기사를 발견했습니다.

echo \(hd0,0\) >> /boot/grub/grub.conf

또는

echo '(hd0,0)' >> /boot/grub/grub.conf

명령줄에서 괄호는 특별한 방식으로 해석됩니다. 괄호의 특별한 점은 무엇입니까? 어떻게 설명되나요?

답변1

괄호는 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).

구현하다화합물 목록서브셸 환경에서는 다음을 참조하세요.쉘 실행 환경. 환경에 영향을 미치는 변수 할당 및 내장 명령은 목록 끝까지 남아 있어서는 안 됩니다.

답변2

사이에 명령 목록 포함괄호서브셸로 실행합니다.

서브셸의 변수는 서브셸의 코드 블록 외부에 표시되지 않습니다. 상위 프로세스와 하위 셸을 시작한 셸에서는 액세스할 수 없습니다. 실제로 이것은 지역 변수입니다.

바라보다Linuxtopia - 20장. 서브쉘

관련 정보