Cara mengubah default / tmp ke / home / user / tmp

13

Apakah ada variabel lingkungan untuk mengatur direktori sementara pada sistem berbasis debian?

Saya memiliki applet java yang menggunakan variabel environment dan semakin bingung ketika meluncurkan dua instance applet yang sama.

Disko
sumber

Jawaban:

17

Saya tidak yakin apakah java applet akan benar-benar melihat variabel lingkungan sebelum dimulai, tetapi apa yang dapat Anda lakukan mengedit / etc / profile dan menambahkan baris berikut:

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

Untuk menjadikannya direktori tmp yang benar (seperti pada file yang hilang saat sesi berakhir, Anda harus mengedit .bash_logout pengguna serta kerangka .bash_logout (/etc/skel/.bash_logout) untuk menyertakan yang berikut ini :

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

Bagian logout berbahaya adalah variabel tidak disetel dan Anda masuk sebagai root! Saya tidak akan menambahkan ini ke akun root atau siapa pun yang merupakan anggota grup wheel! Lanjutkan dengan hati-hati.

TrueDuality
sumber
3
Saya tidak akan memasukkan pembersihan ke .bash_logout sama sekali - apa yang terjadi jika mereka membuka dua sesi dan keluar dari satu? Gunakan tmpwatch. :)
MikeyB
Itu adalah solusi pembersihan yang jauh lebih baik, terima kasih telah menambahkan itu. :)
TrueDuality
NB: tmpwatchperintah tidak ada pada BSD (misalnya OSX) versi unix, untuk siapa saja yang ingin portabilitas. Kotak CentOS saya memilikinya. :)
Cometsong
8

File yang Anda cari adalah:

/etc/environment

Anda harus mengatur variabel TEMP seperti:

TEMP=/home/user/tmp
cstamas
sumber
2
Dan bahkanexport TEMP=/home/user/tmp
Fedir RYKHTIK
@ Fedir yang ada di shell, ya.
cstamas
2

Jika Anda ingin /home/user/tmpdibersihkan saat reboot, saya sarankan Anda menambahkan @rebootpekerjaan ke pribadi pengguna crontab.

Teddy
sumber
1

Dalam C, saya akan menggunakan panggilan tmpfile () untuk sistem posix, yang akan menghindari tabrakan. Jadi saya akan mencari panggilan Java yang sama sebelum mencoba mengimplementasikannya sendiri, jika Anda belum melakukannya.

Kyle Brandt
sumber
Ini mengasumsikan dia adalah orang yang mengembangkan aplikasi
TrueDuality
TrueDuality: Ah, saya kesalahan
Kyle Brandt
1
Jawa memiliki java.io.File.createTempFile. Sekarang dengan menambahkan RNG aman.
Tom Hawtin - tackline
1

Java menggunakan properti sistem java.io.tmpdiruntuk mengkonfigurasi direktori sementara. JRE yang masuk akal akan menetapkan nilai yang masuk akal berdasarkan sistem jika tidak ditentukan secara eksplisit.

Tom Hawtin - tackline
sumber
1

Bagi saya ini berfungsi ketika saya mencoba menginstal file jar menggunakan java.

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

Saya menggunakan Red Hat Linux. /apps/prod/tmpmenjadi folder baru.

sajan
sumber