2010-03-12 10 views
21

UNIX 컴퓨터에서 임시 폴더를 찾는 적절한 방법은 TMP 환경 변수를 보는 것이라고 들었습니다. Linux뿐만 아니라 Windows에서도 작동하는 코드를 작성할 때 TEMP 및 TMP를 확인합니다.TMP 환경 변수는 어떻게 되었습니까?

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

임시 파일을 넣으려는/tmp를 항상 의지 할 수있는 것으로 알고 있지만 TMP는 임시 파일을 다른 곳에 넣으라고 사용자가 말할 수있는 방법이라고 생각했습니다.

아직도 그렇습니까?

+2

어떻게 너무 지역화 되었습니까? 나는 몇 사람이 리눅스에서 임시 파일을 사용하는 것 이상을 확신한다. – Cascabel

답변

12

아마도 TMPDIR을 생각하고있을 것입니다.

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

+6

내 기본 설치 우분투 LTS 서버 12.04 및 14.04 임시 디렉토리에 관한 환경 변수가 없습니다. TMPDIR, TMP 또는 TEMP는 TMPDIR이 문서화되어있는 경우도 있습니다. 결국,이 변수는 신뢰할 수없는 것처럼 보입니다 (더 이상). –

+0

대체로 :'TMPDIR = "{$ {TMPDIR : - $ (dirname $ (mktemp)) /}" – Deilan

8

POSIX/FHS는 /tmp이 임시 파일의 루트라고 말하지만 일부 프로그램에서는 $TEMP 또는 $TMP을 검사 할 수 있습니다.

+0

http://www.pathname.com/fhs/pub/fhs-2.3.html#TMPTEMPORARYFILES –

9

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

mktemp -d -t 

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

+2

좋은 답변이지만 위의 질문에 대한 답변이 아닙니다. –

1
전역 변수 명령.
# prompt> 
printenv | sort 
$ TMP는 (d)
# So, prompt> (i.e. if [ -d /tmp ] is true) 
export TMP="/tmp" 

export 선언 아닌가? 하위 쉘에 변수를 전달하기 위해서.
또한 $ TMPDIR을 설정하면 이것이 Linux의 올바른 var 이름입니다. 그리고 예,/tmp 디렉토리를 사용합니다. 파일은 적어도 다시 부팅 할 때 삭제됩니다. @ 크리스 Lercher 말한 유사

2

,이 나를 위해 작동하는 것을 발견 : 실제로 (때문에 mktemp는 할 -u 플래그의) 임시 파일을 생성하지 않습니다

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

하지만거야 임시 파일이 기록 될 디렉토리를 제공하십시오. 이 스 니펫은 OSX와 Ubuntu에서 작동합니다 (아마 다른 * nix도 가능합니다).

당신은 변수로 설정 같은 것을 할하려면 :

TMPDIR=`dirname $(mktemp -u -t tmp.XXXXXXXXXX)` 
+2

또는 단순히 :'dirname $ (mktemp -u)'. – ekhumoro

0

참고 - 사용자 별이 - 우분투 (내가 다른 systemd 기반의 배포판을 가정)을 XDG_RUNTIME_DIR 변수를 정의 않습니다 단지/tmp를보다, 그래서 좀 더 안전한 임시 공간 :

$가 $ XDG_RUNTIME_DIR 에코/실행/사용자/1000

$ 1! -ld $ XDG_RUNTIME_DIR 은 drwx ------ 2 우분투 우분투 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-dir-for-the-target-user

관련 문제