Is there an environment variable to set the temporary directory on debian based systems?

I have a java applet that uses that environement variable and it's getting confused when launching two instances of the same applet.

link|improve this question

80% accept rate
feedback

5 Answers

up vote 3 down vote accepted

I am unsure if the java applet will actually look at the environment variables before it starts, but what you can do it edit /etc/profile and add the following lines:

if [ -O /home/$USER/tmp && -d /home/$USER/tmp ]; then
        TMPDIR=/home/$USER/tmp
else
        # You may wish to remove this line, it is there in case
        # a user has put a file 'tmp' in there directory or a
        rm -rf /home/$USER/tmp 2> /dev/null
        mkdir -p /home/$USER/tmp
        TMPDIR=$(mktemp -d /home/$USER/tmp)
fi

TMP=$TMPDIR
TEMP=$TMPDIR

export TMPDIR TMP TEMP

To make it a true tmp directory (as in the files go away when the session is ended, you'll want to edit the user's .bash_logout as well as the skeleton .bash_logout (/etc/skel/.bash_logout) to include the following:

if [ -O $TMPDIR && -d $TMPDIR ]; then
        rm -rf $TMPDIR/*
fi

The logout portion is dangerous is the variable doesn't get set and your logged in as root! I wouldn't add this to the root account or anyone that is a member of the wheel group! Proceed at your own caution.

link|improve this answer
2  
I wouldn't put the cleanup into .bash_logout at all - what happens if they open up two sessions and log out of one? Use tmpwatch. :) – MikeyB Oct 10 '09 at 4:19
That is a much better cleanup solution, thanks for adding that. :) – TrueDuality Oct 16 '09 at 12:34
feedback

In C, I would use the tmpfile() call for a posix system, which would avoid the collision. So I would look for a similar Java call before trying to implement it myself, if you haven't already.

link|improve this answer
This assumes he is the one developing the application – TrueDuality Oct 9 '09 at 15:00
TrueDuality: Ah, my mistake – Kyle Brandt Oct 9 '09 at 15:17
1  
Java has java.io.File.createTempFile. Now with added secure RNG. – Tom Hawtin - tackline Oct 13 '09 at 0:20
feedback

The file you are looking for is:

/etc/environment

You have to set the TEMP variable like:

TEMP=/home/user/tmp
link|improve this answer
feedback

Java uses the system property java.io.tmpdir to configure the temporary directory. A reasonable JRE will set that to a sensible value based on the system if not explicitly specified.

link|improve this answer
feedback

If you want /home/user/tmp to be cleaned on reboot, I suggest you add an @reboot job to the user's personal crontab.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.