cat <(echo yes)
"예"를 표시합니다. Bash 5.2.15에서 실행하면 sh -m
동일한 결과가 나타납니다.
그러나 Bash 4.4.20에서는 오류가 발생합니다.
sh -c "cat <(echo yes)"
sh: -c: line 0: syntax error near unexpected token `('
오류가 발생하는 이유는 무엇입니까?
sh -c
실행 sh
하고 명령을 입력하는 것 외에 다른 방법이 있습니까?
답변1
Bash를 로 실행하면 sh
POSIX 모드에서 시작되어 5.1 이전 Bash 버전의 프로세스 대체를 포함하여 일부 비표준 기능이 비활성화됩니다. CHANGES
배포판의 문서 에서 :
This document details the changes between this version, bash-5.1-alpha, and
the previous version, bash-5.0-release.
3. New Features in Bash
u. Process substitution is now available in posix mode.
최신 버전에서 작동한다는 사실이 아마도 거기에 나열되지 않은 이유일 것입니다.POSIX 모드에 대한 참조 매뉴얼 페이지.
많은 시스템에서는 sh
Bash가 전혀 아닙니다. Bash를 원하면 를 실행하세요 bash
.