سؤال

سمعت دائما أن الطريقة المناسبة للعثور على المجلد المؤقت على جهاز Unix هو إلقاء نظرة على متغير بيئة TMP. عند كتابة التعليمات البرمجية التي عملت على Windows بالإضافة إلى Linux، أود أن تحقق من TEMP و TMP.

اليوم، اكتشفت أن تثبيت Ubuntu الخاص بي لا يحتوي على متغير البيئة على الإطلاق.

أعلم أنه يبدو أنه يمكنك دائما الاعتماد على / tmp يجري هناك لوضع ملفاتك المؤقتة، لكنني فهمت أن TMP كان الطريقة التي يمكن للمستخدم أن يخبرك بها أن تضع الملفات المؤقتة في مكان آخر.

لا يزال هذا هو الحال؟

هل كانت مفيدة؟

المحلول

ربما تفكر في TMPDIR.

يمثل هذا المتغير اسم مسار الدليل المتاح للبرامج التي تحتاج إلى مكان لإنشاء ملفات مؤقتة.

نصائح أخرى

طريقة جيدة لإنشاء دليل مؤقت يستخدم MKTEMP، على سبيل المثال

mktemp -d -t

بهذه الطريقة، يمكنك التأكد من أن أسماء الملفات الخاصة بك لن تصطدم بملفات موجودة.

بوسيكس / FHS يقول ذلك /tmp هو الجذر للملفات المؤقتة، على الرغم من أن بعض البرامج قد تختار فحصها $TEMP أو $TMP في حين أن.

على غرار ما chris Lercher، أجد أن هذا يعمل بالنسبة لي:

dirname $(mktemp -u -t tmp.XXXXXXXXXX)

لن يقوم ذلك في الواقع بإنشاء ملف TEMP (نظرا للعلم من MKTEMP) ولكنه سيمنحك الدليل الذي سيتم فيه كتابة ملفات TEMP. يعمل هذا القصاص على OSX و Ubuntu (ربما غير ذلك * Nix أيضا).

إذا كنت ترغب في تعيينها في متغير، فقم بعمل شيء مثل هذا:

TMPDIR=`dirname $(mktemp -u -t tmp.XXXXXXXXXX)`
المتغيرات العالمية أمر.
# prompt>
printenv | sort
TMP $ ليس كذلك يعلن(د)
# So, prompt> (i.e. if [ -d /tmp ] is true)
export TMP="/tmp"

export ب من أجل تمرير المتغيرات إلى صفق.
أيضا، استخدم $ TMPDIR إذا كانت المجموعة، فهذا هو اسم VAR الصحيح لنظام التشغيل Linux. ونعم، أنا استخدم دليل / TMP؛ سيتم حذف الملفات على الأقل على إعادة التشغيل.!.

FYI - Ubuntu (وأنا أفترض أن Distribs SystemD القائم على النظام) حدد متغير XDG_Runtime_Dir - وهو مساحة TEMP لكل مستخدم، أكثر أمانا أكثر قليلا من OFT / TMP:

$ echo $ xdg_runtime_dir / run / user / 1000

$ LS -LD $ XDG_RUNTIME_DIR DRWX ------ 2 أوبونتو أوبونتو 40 ديسمبر 22 15:18 / تشغيل / المستخدم / 1000

أعتقد أنه يتم الحفاظ على xdg_runtime_dir بواسطة SystemD / PAM، لذلك لن يتم تعيينه في المراهنات أو غيرها من البيئات غير النظامية.

يمكنك أن تفعل شيئا مثل هذا في ~ / .bashrc إذا أردت:

تصدير TEMP = "$ {xdg_runtime_dir: - / tmp}"

يرى:https:/0standards.freedesktop.org/basedir-spec/basedir-spec-latest.html. https://www.freedesktop.org/wiki/

أيضا - يبدو لي بعض التحذير مع XDG_RUNTIME_DIR وسودو:https://unix.stackexchange.com/Questions/346841/Why-Does-Sudo-i-Not-Set-STG-Runtime-dir-for-target-user.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top