매개변수 없이 exec는 무엇을 합니까?

매개변수 없이 exec는 무엇을 합니까?

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

관련 정보