Cómo cambiar default / tmp a / home / user / tmp

Respuestas:

17

No estoy seguro de si el applet de Java realmente mirará las variables de entorno antes de que comience, pero lo que puede hacer es editar / etc / profile y agregar las siguientes líneas:

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

Para convertirlo en un verdadero directorio tmp (como en los archivos desaparecen cuando finaliza la sesión, querrá editar el .bash_logout del usuario así como el esqueleto .bash_logout (/etc/skel/.bash_logout) para incluir lo siguiente :

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

¡La parte de cierre de sesión es peligrosa si la variable no se configura y ha iniciado sesión como root! ¡No agregaría esto a la cuenta raíz ni a nadie que sea miembro del grupo de la rueda! Proceda bajo su propia precaución.

TrueDuality
fuente
3
No pondría la limpieza en .bash_logout en absoluto: ¿qué sucede si abren dos sesiones y cierran sesión en una? Usa tmpwatch. :)
MikeyB
Esa es una solución de limpieza mucho mejor, gracias por agregar eso. :)
TrueDuality
NB: el tmpwatchcomando no existe en la versión BSD (p. Ej., OSX) de Unix, para cualquiera que vaya por la portabilidad. Sin embargo, mis cajas CentOS lo tienen. :)
Cometsong
8

El archivo que está buscando es:

/etc/environment

Debe configurar la variable TEMP como:

TEMP=/home/user/tmp
cstamas
fuente
2
E inclusoexport TEMP=/home/user/tmp
Fedir RYKHTIK
@Fedir que está en el caparazón, sí.
cstamas
2

Si desea /home/user/tmpque lo limpien al reiniciar, le sugiero que agregue un @reboottrabajo al personal del usuario crontab.

Osito de peluche
fuente
1

En C, usaría la llamada tmpfile () para un sistema posix, lo que evitaría la colisión. Por lo tanto, buscaría una llamada Java similar antes de intentar implementarla yo mismo, si aún no lo ha hecho.

Kyle Brandt
fuente
Esto supone que él es el que está desarrollando la aplicación
TrueDuality
TrueDuality: Ah, mi error
Kyle Brandt
1
Java tiene java.io.File.createTempFile. Ahora con RNG seguro agregado.
Tom Hawtin - tackline
1

Java usa la propiedad del sistema java.io.tmpdirpara configurar el directorio temporal. Un JRE razonable establecerá eso en un valor razonable basado en el sistema si no se especifica explícitamente.

Tom Hawtin - tackline
fuente
1

Para mí, esto funcionó cuando estaba tratando de instalar un archivo jar usando Java.

export _JAVA_OPTIONS="-Djava.io.tmpdir=/apps/prod/tmp"

Yo uso un Red Hat Linux. /apps/prod/tmpsiendo la nueva carpeta

sajan
fuente