일부 heredoc 앞에 bash 키워드가 오는 이유는 무엇입니까?

일부 heredoc 앞에 bash 키워드가 오는 이유는 무엇입니까?

일부 문서에서는 시작 문자(<<), 이름 및 파일 설명자 앞에 bash 키워드가 표시됩니다. 예를 들어:

bash /dev/fd/10 10<<'SES'

배쉬가 왜 거기에 있나요? 내 말은, 우리는 이미 Bash에서 작업하고 있고 cat텍스트를 표시한 다음 다른 파일로 리디렉션하는 데 사용되는 것과 같지 않기 때문에 cat << EOT >> /file.txt신입생으로서 bash 키워드가 필요한 이유를 물었습니다.

답변1

bash키워드는 없으며 실행 중인 명령입니다. 매개변수가 전달되고 있습니다 /dev/fd/10. 스크립트를 실행하는 셸(bash일 수도 있고 아닐 수도 있음)은 파일 설명자 10에서 읽는 구분 기호를 설정합니다.

따라서 구분된 문서를 쉘 스크립트로 실행하기 위해 bash가 호출됩니다. 이는 줄을 읽는 것과 비슷합니다 bash /path/to/script.sh. 이 경우 스크립트는 구분된 문서에서 나옵니다.

누구든지 이 작업을 수행한 적이 있습니까(단순히 사용하는 대신 컨텍스트(및 아마도 기록) 없이 대답하는 것은 불가능합니다. DopeGhoti가 제안한 대로) 한 가지 추측은 스크립트가 bash가 필요한 다른 쉘에서 실행될 수 있다는 것입니다. 또 다른 추측 가능성은 다음과 같습니다. 스크립트 작성자가 대안을 몰랐다는 것입니다.( commands )

stdin 대신 FD 10을 사용하는 이유는 스크립트 블록도 stdin에서 읽어야 하기 때문일 수 있습니다.

관련 정보