I'm eriting a MacOS script that need to run under admin rights (under 'sudo'). Script needs a temp folder in order to keep some temp files. Unfortunately, there is no 'TMPDIR' under root! If i run 'env' i see TMPDIR with a nice temp path. If i run 'sudo env' i don't see TMPDIR :(. Is it any way to obtain correct "temp folder" path under root?
2 Answers
In general, you're supposed to create temp files using the library-provided functions and use the filenames and/or handles provided. On mac, the mktemp(1) command with the "-d" option should do what you want.
NAME mktemp -- make temporary filename (unique)
SYNOPSIS mktemp [-dqtu] [-p directory] [template]
DESCRIPTION The mktemp utility takes the given filename template and overwrites a portion of it to create a unique filename. The template may be any file- name with some number of `Xs' appended to it, for example /tmp/tfile.XXXXXXXXXX. If no template is specified a default of tmp.XXXXXXXXXX is used and the -t flag is implied (see below).

- 2,239
- 2
- 12
- 4
If there's a $TMPDIR, use it. Otherwise use /tmp (it should exist on Mac too).

- 10,162
- 1
- 26
- 42
-
Using /tmp looks fine for me. Is it any official BSD documentation that instructs to use it under root account, or is it a common knowledge? – grigoryvp Jun 01 '09 at 14:40
-
/tmp is just the standard location for temporary files, as defined in http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard – user1686 Jun 01 '09 at 15:25