exec
매개변수 없이 성공을 반환하며 분명히 아무 작업도 수행하지 않습니다. 왜?
답변1
방법Bash 매뉴얼에는 그렇게 나와 있습니다., 구문 은 다음 exec
과 같습니다
exec [-cl] [-a name] [command [arguments]]
그리고
만약에주문하다제공되면 새 프로세스를 생성하지 않고 셸을 교체합니다.
하지만,
그렇지 않다면주문하다지정되면 리디렉션을 사용하여 현재 쉘 환경에 영향을 미칠 수 있습니다.
따라서 exec
명령줄에 다른 내용이 없으면 실행할 명령도 없고 적용할 리디렉션도 없으므로 아무 작업도 수행할 필요가 없습니다.
그러나 예를 들어 exec >> output.txt
실제 매개변수도 없지만 exec
여전히 쉘에 리디렉션을 적용합니다.
이는 Zsh 및 POSIX 기능과 유사하지만 POSIX 텍스트는 읽기가 조금 더 어렵습니다.
답변2
셸 상단 근처에 이 줄을 배치하면 더 이상 리디렉션되지 않는 스크립트의 출력이 캡처됩니다.
LOG=bash.out.txt
exec >"$LOG" 2>&1
echo "captured into $LOG"
echo "not captured into $LOG" > otherfile.txt