
Bash에서는 파일 설명자와 파일 사이의 연결을 만들 수 있습니다. 예를 들어 다음과 같습니다.
exec > /path/to/myfile
이는 fd 1을 파일에 연결합니다.
fd가 어떤 파일에도 연결되지 않도록 연결된 모든 파일에서 fd의 연결을 끊을 수 있는 방법이 궁금합니다. 및 파일 /dev/null
입니다 /dev/tty
.
감사해요.
내 목적은 알아내는 것입니다.쉘은 파일 설명자 0, 1, 2를 제어 터미널에 자동으로 연결합니까?bash
, 동일한 bash 쉘에서 실행하기 전에 bash에서 fd 0, 1 및 2의 연결을 끊습니다 .
답변1
원하는 것은 Bourne과 같은 쉘에서 >&-
(기본값은 fd 1) 또는 <&-
(기본값은 fd 0) 연산자로 수행되는 파일 설명자를 닫는 것입니다.
exec >&-
exec 1>&-
exec 1<&-
모두 동일하며 close(1)
시스템 호출이 발생합니다.
파일 설명자 0, 1, 2를 닫는 것은 일반적으로 좋지 않은 생각입니다. 대부분의 명령에서는 해당 파일 설명자가 열려 있을 것으로 예상하고(stdin, stdout 및 stderr), 파일을 열면 해당 파일이 실수로 stdin/이 될 수 있습니다. stdout/stderr 및 stdout이나 stderr에 인쇄하는 내용은 결국 해당 파일에 기록될 수 있습니다.