Как изменить значение по умолчанию / tmp на / home / user / tmp

13

Существует ли переменная окружения для установки временного каталога в системах на основе Debian?

У меня есть Java-апплет, который использует эту переменную environement, и он запутывается при запуске двух экземпляров одного и того же апплета.

Дискотека
источник

Ответы:

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! Я бы не стал добавлять это в учетную запись root или кого-либо, кто является членом группы wheel! Действуйте по своему усмотрению.

TrueDuality
источник
3
Я бы вообще не помещал очистку в .bash_logout - что произойдет, если они откроют две сессии и выйдут из одной? Используйте tmpwatch. :)
MikeyB
Это намного лучшее решение для очистки, спасибо, что добавили это. :)
TrueDuality
Примечание: tmpwatchкоманда не существует в BSD (например, OSX) версии Unix, для тех, кто хочет переносимости. У моих коробок CentOS есть это все же. :)
Cometsong
8

Файл, который вы ищете:

/etc/environment

Вы должны установить переменную TEMP следующим образом:

TEMP=/home/user/tmp
cstamas
источник
2
И дажеexport TEMP=/home/user/tmp
Федир Рыхтик
@Fedir, который находится в раковине, да.
cтамас
2

Если вы хотите /home/user/tmpочиститься при перезагрузке, я предлагаю вам добавить @rebootработу в личный кабинет пользователя crontab.

Тедди
источник
1

В C я бы использовал вызов tmpfile () для posix-системы, что позволило бы избежать столкновения. Поэтому я хотел бы найти аналогичный вызов Java, прежде чем пытаться реализовать его сам, если вы этого еще не сделали.

Кайл Брандт
источник
Предполагается, что именно он разрабатывает приложение
TrueDuality,
TrueDuality: Ах, моя ошибка
Кайл Брандт
1
Ява имеет java.io.File.createTempFile. Теперь с добавлением безопасного RNG.
Том Хотин - tackline
1

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

Том Хотин - Tackline
источник
1

Для меня это сработало, когда я пытался установить JAR-файл с помощью Java.

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

Я использую Red Hat Linux. /apps/prod/tmpбудучи новой папкой.

Sajan
источник