배쉬 매뉴얼에서
Bash가 실행한 비내장 명령은 신호 처리기를 쉘이 상위로부터 상속받은 값으로 설정합니다.
작업 제어가 비활성화되면 비동기 명령은 이러한 상속된 처리기 외에 SIGINT 및 SIGQUIT를 무시합니다.
명령 대체의 결과로 실행되는 명령은 키보드에서 생성된 작업 제어 신호 SIGTTIN, SIGTTOU 및 SIGTSTP를 무시합니다.
위의 의미에 대한 몇 가지 예를 들어줄 수 있는 사람이 있는지 궁금합니다. 감사해요.
답변1
stty tostop
echo bar >&2 & # no output from echo, just from shell job control
fg # now the output is produced
bar
text=$(echo foo; echo bar >&2) # command substitution in foreground command
bar
text=$(echo /etc/passwd; echo bar >&2) ; ls -l "$text" &
bar
fg
-rw-r--r-- 1 root root 2745 18. Feb 00:36 /etc/passwd
백그라운드 명령의 "정상" 출력은 지연되지만 SIGTTOU
백그라운드 명령 대체의 출력은 stderr
즉시 표시되기 때문입니다.
외부 명령
trap '' HUP
bash
sleep 1234 # PID 23456
다른 껍질에
kill -HUP 23456 # does not abort sleep