bash - файл - переменные среды unix




Что случилось с переменной окружения TMP? (4)

Я всегда слышал, что правильный способ найти временную папку на компьютере с UNIX - это посмотреть переменную среды TMP. При написании кода, который работал как в Windows, так и в Linux, я проверял TEMP и TMP.

Сегодня я обнаружил, что моя установка Ubuntu вообще не имеет этой переменной среды.

Я знаю, что, кажется, вы всегда можете рассчитывать на наличие / tmp для размещения ваших временных файлов, но я понимал, что TMP - это способ, которым пользователь может сказать вам, чтобы поместить временные файлы куда-то еще.

Это все еще так?


POSIX / FHS говорит, что /tmp является корнем для временных файлов, хотя некоторые программы могут вместо этого использовать $TEMP или $TMP .


К вашему сведению - Ubuntu (и я предполагаю, что другие системные дистрибутивы) действительно определяют переменную XDG_RUNTIME_DIR, которая является временным пространством для каждого пользователя, поэтому немного более безопасна, чем просто / tmp:

$ echo $ XDG_RUNTIME_DIR / run / user / 1000

$ ls -ld $ XDG_RUNTIME_DIR drwx ------ 2 ubuntu ubuntu 40 дек. 22 15:18 / run / user / 1000

Я думаю, что XDG_RUNTIME_DIR поддерживается systemd / pam, поэтому он не будет установлен в Dockers или других несистемных средах.

Вы можете сделать что-то подобное в ~ / .bashrc, если вам нравится:

export TEMP = "$ {XDG_RUNTIME_DIR: - / tmp}"

См .: https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html https://www.freedesktop.org/wiki/

Кроме того, мне кажется, что есть некоторые оговорки с XDG_RUNTIME_DIR и sudo: https://unix.stackexchange.com/questions/346841/why-does-sudo-i-not-set-xdg-runtime-dir-for-the-target-user


Хороший способ создать временный каталог - это использовать mktemp, например

mktemp -d -t

Таким образом, вы даже можете убедиться, что имена ваших файлов не будут конфликтовать с существующими файлами.


Вы, наверное, думаете о TMPDIR .

Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.





tmp