다음은 몇 가지 코드입니다. POSIX sh와 Bash에서 다른 기능 수행 .
hello &> world
그것이 당신에게 "유효하지 않은지"모르겠습니다.
Bash에서는 표준 출력과 표준 오류 를 모두hello
파일로 리디렉션 합니다 world
. POSIX에서는 백그라운드에서 sh
실행 hello
된 다음에 빈 리디렉션을 만들어 world
잘라 & >
냅니다 (예 :로 취급 ).
Bash 확장 프로그램이 실행될 때 다른 작업을 수행하는 다른 경우가 많이 bash
있으며 순수한 POSIX에서 다른 영향을 미칩니다 sh
. 예를 들어 중괄호 확장 은 또 다른 것이며 Bash의 POSIX 모드에서는 동일하게 작동하지만 그렇지 않습니다.
정적 구문 오류가 발생하는 한 Bash에는 POSIX에서 지정하지 않은 예약어 (예 : [[
및 time
)가 있습니다. 예를 들어 [[ x
유효한 POSIX 셸 코드이지만 Bash 구문 오류이며 구문 오류 가 발생할 수있는 다양한 POSIX 비 호환 버그 의 이력 , 이 질문에서와 같은 :
x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file
구문 오류 전용은 중요한 상황에 대해 "유효하지 않은"에 대한 매우 위험한 정의이지만 거기에 있습니다.