문제

UNIX 머신에서 임시 폴더를 찾는 올바른 방법은 TMP 환경 변수를 보는 것이라고 항상 들었습니다. Linux뿐만 아니라 Windows에서 작동하는 코드를 작성할 때는 Temp 및 TMP를 확인했습니다.

오늘, 나는 우분투 설치에 환경 변수가 전혀 없다는 것을 발견했습니다.

나는 당신이 항상 /tmp가 임시 파일을 넣을 것을 믿을 수있을 것 같지만, TMP가 사용자가 임시 파일을 다른 곳에 두라고 말할 수있는 방법이라는 것을 이해했습니다.

여전히 사실입니까?

도움이 되었습니까?

해결책

당신은 아마도 생각하고 있습니다 TMPDIR.

이 변수는 임시 파일을 만들기위한 장소가 필요한 프로그램에 사용할 수있는 디렉토리의 경로 이름을 나타냅니다.

다른 팁

임시 디렉토리를 만드는 좋은 방법은 mktemp를 사용하는 것입니다.

mktemp -d -t

이렇게하면 파일 이름이 기존 파일과 충돌하지 않도록 할 수도 있습니다.

Posix/FHS는 그렇게 말합니다 /tmp 일부 프로그램은 검사를 선택할 수 있지만 임시 파일의 근본입니다. $TEMP 또는 $TMP 대신에.

@chris Lercher가 말한 것과 비슷하게, 나는 이것이 나에게 효과가 있음을 알았습니다.

dirname $(mktemp -u -t tmp.XXXXXXXXXX)

실제로는 Temp 파일을 만들지는 않지만 (-u 플래그에서 mktemp로 인해) Temp 파일이 작성 될 디렉토리를 제공합니다. 이 스 니펫은 OSX와 Ubuntu에서 작동합니다 (아마도 다른 *닉스).

변수로 설정하려면 다음과 같은 작업을 수행하십시오.

TMPDIR=`dirname $(mktemp -u -t tmp.XXXXXXXXXX)`
글로벌 변수 명령.
# prompt>
printenv | sort
$ tmp는 아닙니다 선언하다(디)
# So, prompt> (i.e. if [ -d /tmp ] is true)
export TMP="/tmp"

export ? 변수를 서브 쉘로 전달하기 위해.
또한 SET이 $ tmpdir를 사용하십시오. Linux의 올바른 Var 이름입니다. 그렇습니다. /TMP 디렉토리를 사용합니다. 파일은 최소한 재부팅시 삭제됩니다.!.

fyi -ubuntu (그리고 다른 Systemd 기반 배포판이 가정)는 XDG_Runtime_dir 변수를 정의합니다.이 변수는 사용자 당 온도 공간이므로 /tmp보다 더 안전하지 않습니다.

$ echo $ xdg_runtime_dir/run/user/1000

$ ls -ld $ xdg_runtime_dir drwx ------ 2 Ubuntu Ubuntu 40 12 월 22 일 15:18/run/user/1000

XDG_RUNTIME_DIR은 SystemD/PAM에 의해 유지되므로 Dockers 또는 다른 비 시스템 환경에서는 설정되지 않습니다.

원하는 경우 ~/.bashrc에서 이와 같은 일을 할 수 있습니다.

내보내기 temp = "$ {xdg_runtime_dir :-/tmp}"

보다:https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html https://www.freedesktop.org/wiki/

또한 - XDG_RUNTIME_DIR 및 SUDO와의 경고가 있습니다.https://unix.stackexchange.com/questions/346841/why-does-sudo-i-not-set-xdg-runtime-for-the-target-user

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top