Odpowiedzi:
Nie jestem pewien, czy aplet java rzeczywiście spojrzy na zmienne środowiskowe przed jego uruchomieniem, ale co możesz zrobić, edytuj / etc / profile i dodaj następujące wiersze:
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/XXXX)
fi
TMP=$TMPDIR
TEMP=$TMPDIR
export TMPDIR TMP TEMP
Aby stał się prawdziwym katalogiem tmp (jak w plikach znikają po zakończeniu sesji, będziesz musiał edytować .bash_logout użytkownika oraz szkielet .bash_logout (/etc/skel/.bash_logout), aby uwzględnić następujące :
if [ -O $TMPDIR && -d $TMPDIR ]; then
rm -rf $TMPDIR/*
fi
Wylogowanie jest niebezpieczne, ponieważ zmienna nie zostanie ustawiona, a użytkownik zalogowany jako root! Nie dodałbym tego do konta root ani nikogo, kto jest członkiem grupy kół! Postępuj zgodnie z własną ostrożnością.
tmpwatch
polecenie nie istnieje w wersji uniksowej BSD (np. OSX) dla każdego, kto wybiera przenośność. Moje pudełka CentOS mają to. :)
Plik, którego szukasz to:
/etc/environment
Musisz ustawić zmienną TEMP w następujący sposób:
TEMP=/home/user/tmp
export TEMP=/home/user/tmp
W C użyłbym wywołania tmpfile () dla systemu posix, który uniknąłby kolizji. Więc szukałbym podobnego wywołania Java, zanim spróbuję go zaimplementować, jeśli jeszcze tego nie zrobiłeś.
java.io.File.createTempFile
. Teraz z dodanym bezpiecznym RNG.
Java używa właściwości systemowej java.io.tmpdir
do skonfigurowania katalogu tymczasowego. Rozsądne środowisko JRE ustawi wartość rozsądną na podstawie systemu, jeśli nie zostanie to wyraźnie określone.
export _JAVA_OPTIONS="-Djava.io.tmpdir=<local path>"
Na przykład:
export _JAVA_OPTIONS="-Djava.io.tmpdir=/home/user/tmp"