Як змінити типовий / tmp на / home / user / tmp


14

Чи є змінна середовище для встановлення тимчасового каталогу в системах на базі debian?

У мене є аплет Java, який використовує цю змінну оточення, і він заплутається при запуску двох екземплярів одного аплету.


Відповіді:


17

Я не впевнений, що аплет java насправді перегляне змінні середовища перед його запуском, але що ви можете це змінити / etc / profile та додати наступні рядки:

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

Щоб зробити його справжньою каталогом tmp (як у файлах, що минають, коли сеанс закінчується, вам потрібно буде відредагувати .bash_logout користувача, а також скелет .bash_logout (/etc/skel/.bash_logout), включити наступне :

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

Частина виходу є небезпечною, тому що змінна не встановлюється, і ви ввійшли як root! Я б не додав цього до кореневого облікового запису чи будь-кого, хто є членом колесної групи! Дійте з власної обережності.


3
Я не ставлю очищення в .bash_logout взагалі - що станеться, якщо вони відкриють два сеанси та вийдуть з одного? Використовуйте tmpwatch. :)
MikeyB

Це набагато краще рішення щодо очищення, дякую, що додали це. :)
TrueDuality

Примітка: tmpwatchкоманда не існує у BSD (наприклад, OSX) версії unix, для тих, хто переходить на портативність. У моїх ящиках CentOS це є. :)
Cometsong

8

Ви шукаєте файл:

/etc/environment

Ви повинні встановити змінну TEMP на зразок:

TEMP=/home/user/tmp

2
І навітьexport TEMP=/home/user/tmp
Федір РИХТИК

@Fedir, який знаходиться в оболонці, так.
cstamas

2

Якщо ви хочете, /home/user/tmpщоб вас очистили під час перезавантаження, я пропоную вам додати @rebootроботу до особистої особи користувача crontab.


1

У C я би використовував tmpfile () виклик для системи posix, яка б уникнула зіткнення. Тому я би шукав подібний дзвінок Java, перш ніж спробувати його реалізувати, якщо ви ще цього не зробили.


Це передбачає, що він розробляє додаток
TrueDuality

TrueDuality: Ах, моя помилка
Кайл Брандт

1
Java має java.io.File.createTempFile. Тепер із доданим захищеним RNG.
Том Хотін - тайклін

1

Java використовує властивість системи java.io.tmpdirдля налаштування тимчасового каталогу. Розумний JRE встановить це значуще значення на основі системи, якщо не вказано прямо.


1

Для мене це спрацювало, коли я намагався встановити файл jar за допомогою Java.

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

Я використовую Red Hat Linux. /apps/prod/tmpбудучи новою папкою.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.