Где создавать временные файлы, когда доступ к / tmp / запрещен? - PullRequest
3 голосов
/ 06 октября 2008

Я написал короткий bash-скрипт для выполнения задачи, которая включает в себя создание временного каталога и сохранение в нем различных файлов и выполнение различных операций над ним.

В своем первом проходе я просто создал временный каталог в /tmp/$$.$script ", но затем я протестировал скрипт на компьютере, где у меня не было доступа для записи в / tmp /, и я бы Я хотел бы принять во внимание этот случай. Поэтому мой вопрос: где хорошее вторичное расположение для этого временного каталога? Должен ли я просто использовать текущий каталог? Домашний каталог? ~ / tmp /? Выходное местоположение скрипта?

Все созданные файлы очищаются при выходе из скрипта.

Ответы [ 5 ]

7 голосов
/ 06 октября 2008

Многие системы также имеют /var/tmp. Если системный администратор не хочет, чтобы вы записывали в /tmp, возможно, они предоставили какую-то альтернативу ... установлена ​​ли переменная окружения $TMPDIR? Например, на моем Mac:

$ echo $TMPDIR
/var/folders/jf/jfu4pjGtGGGkUuuq8HL7UE+++TI/-Tmp-/
5 голосов
/ 06 октября 2008

Я бы предложил ~ /. [Имя вашего скрипта] / tmp, если TMPDIR не установлен, вместо ~ / tmp /, так как пользователь, возможно, создал это самостоятельно (и вы можете не захотеть случайно переопределять вещи в есть).

Точно так же, как в мантии bash -

case $TMPDIR in '') tmp_dir=".${0}/tmp";; *) tmp_dir=$TMPDIR;; esac
4 голосов
/ 06 октября 2008

Используйте $ {TMPDIR: - / tmp} ($ TMPDIR или / tmp, если $ TMPDIR не установлен). Если это недоступно для записи, выйдите с ошибкой, сообщившей об этом, или попросите пользователя определить его. Я думаю, что спрашивать пользователя, куда должны идти временные файлы, предпочтительнее, чем предполагать, и оставлять их там, если ваш процесс будет убит.

2 голосов
/ 06 октября 2008

Вы можете попробовать использовать mktemp (при условии, что он правильно настроен для системы)

например. MYTMPDIR=$(mktemp -d)

1 голос
/ 06 октября 2008

Вы можете попробовать /var/tmp, хотя вполне вероятно, что /tmp является символической ссылкой на это (или наоборот).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...