/tmp
파일에 쓰기 전에 파일을 확인하고 생성해야 합니까? sudo rm -rf /tmp
이는 매우 드물기 때문에 누구도 탈출하지 못한다고 가정합니다.
답변1
이것FHS기존 명령 /tmp
및POSIX따라서 그 존재에 의존할 수 있습니다(적어도 호환 가능한 시스템에서는 가능하지만 실제로는 Unix 계열 시스템에서는 거의 보장됩니다). 그러나 이렇게 해서는 안 됩니다. 시스템 관리자나 사용자는 임시 파일을 위해 다른 위치를 사용하는 것을 선호할 수 있습니다. 바라보다여러 플랫폼에서 올바른 tmp 디렉토리 찾기자세한 내용은.
답변2
실제로는 /tmp
거의 확실히 그렇습니다. 그러나 존재한다고 해서 거기에 임시 파일을 넣어야 한다는 의미는 아닙니다.
이것기준관례는 TMPDIR
환경 변수를 사용하는 것입니다. 존재하는 경우 임시 파일용 디렉터리를 가리킵니다. 존재하지 않는 경우 임시 파일이 /tmp
.
쉘 스크립트에서는 이를 임시 파일 위치로 사용할 수 있습니다. 설정하면 "${TMPDIR:-/tmp}"
해당 값으로 확장되고, 그렇지 않으면 해당 값으로 확장됩니다. 또는 설정되어 있지 않은 경우에는 다음 명령을 사용하여 조건부로 설정할 수 있습니다.TMPDIR
/tmp
TMPDIR
: "${TMPDIR:=/tmp}"
그런 다음 그 안에 임시 파일을 만듭니다 "$TMPDIR"
.
모든 응용 프로그램은 /tmp
또는 아래에 파일을 만들 수 있습니다 $TMPDIR
. 또한 디렉터리는 사용자 간에 공유될 수 있으므로 파일 생성 시 권한에 대해 알고 있어야 합니다. 많은 시스템(Linux, *BSD)에는 다음 명령이 있습니다.mktemp
올바른 디렉터리에 파일을 안전하게 생성합니다. 일반적으로 이를 사용하여 임시 파일 및 디렉토리를 생성하는 것이 좋습니다 mktemp
. 특히 공유 디렉토리에 파일을 생성하는 것이 가능한 심볼릭 링크 공격으로 인해 안전하게 수행될 수 없는 쉘 스크립트에서 그렇습니다( mkdir
오류가 올바르게 처리되면 괜찮습니다).
비어 있지 않은 경우 - 변수가 비어 있으면 어쨌든 사용할 수 없습니다. 빈 변수나 설정되지 않은 변수에 파일 이름이 포함되어야 하는 경우 일반적으로 동일한 방식으로 처리하는 것이 가장 좋습니다.
답변3
존재할 가능성이 매우 높지만 확인해야 할 또 다른 이유가 있습니다. 존재한다는 보장은 없습니다.큰. 많은 시스템에서 /tmp
이는 디스크가 아닌 RAM으로 지원되며 몇 GB로 제한될 수 있습니다. (Fedora 시스템에서는 기본적으로 RAM의 절반입니다.) 그러므로 RAM이 존재하는지 확인해야 할 뿐만 아니라 무엇을 넣을 공간이 있는지도 확인해야 합니다.
더 큰 것이 있으면 를 사용하십시오 /var/tmp/
.