Frage

Ich habe immer gehört, dass der richtige Weg, um den temporären Ordner auf einem UNIX-Rechner zu finden war bei dem TMP-Umgebungsvariable zu suchen. Wenn das Schreiben von Code, der auf Windows als auch Linux gearbeitet, würde ich für TEMP und TMP überprüfen.

Heute habe ich entdeckt, dass mein Ubuntu installieren nicht über diese Umgebungsvariable überhaupt.

Ich weiß, es scheint, kann man immer zählt auf / tmp es, Ihre temporären Dateien in setzen, aber ich verstand, dass TMP war der Weg der Benutzer könnten Sie sagen, die temporären Dateien irgendwo anders zu setzen.

Ist das noch der Fall?

War es hilfreich?

Lösung

Sie sind wahrscheinlich denken TMPDIR .

  

Diese Variable ein Pfadname eines Verzeichnisses repräsentieren wird für Programme zur Verfügung gestellt, die einen Platz benötigen, um temporäre Dateien zu erstellen.

Andere Tipps

Ein guter Weg, um ein temporäres Verzeichnis verwendet mktemp zu erstellen, z.

mktemp -d -t

Auf diese Weise können Sie auch sicherstellen, dass Ihre Dateinamen werden nicht kollidieren mit vorhandenen Dateien.

POSIX / FHS sagt, dass /tmp ist die Wurzel für temporäre Dateien, obwohl einige Programme können stattdessen $TEMP oder $TMP untersuchen.

Ähnlich wie @ Chris Lercher sagte, finde ich, dass dies funktioniert für mich:

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

Das wird nicht wirklich eine temporäre Datei (wegen des -u-Flag auf mktemp) erstellen, aber es werden Ihnen das Verzeichnis, dass temporäre Dateien geschrieben werden würden. Dieser Code-Schnipsel funktioniert auf OSX und Ubuntu (wahrscheinlich andere * nichts zu).

Wenn Sie es in eine Variable einstellen möchten, tun Sie etwas wie folgt aus:

TMPDIR=`dirname $(mktemp -u -t tmp.XXXXXXXXXX)`
Globale Variablen Befehl.
# prompt>
printenv | sort
$ TMP ist nicht declare (d)
# So, prompt> (i.e. if [ -d /tmp ] is true)
export TMP="/tmp"

export? Um Variablen zu einer Subshell zu übergeben.
Verwenden Sie auch $ TMPDIR falls eingestellt, dies ist der richtige var name für Linux Und Ja, ich verwende das Verzeichnis / tmp. Dateien werden zumindest beim Neustart. gelöscht!.

FYI - ubuntu (und ich nehme an andere systemd basierte Distributionen) funktioniert die XDG_RUNTIME_DIR Variable definieren - das ist ein pro-Benutzer-Temp Raum, so wenig sicherer als nur / tmp:

$ echo $ XDG_RUNTIME_DIR / Run / user / 1000

$ ls ld $ XDG_RUNTIME_DIR drwx ------ 2 ubuntu ubuntu 40 22. Dezember 15.18 / run / user / 1000

Ich denke, XDG_RUNTIME_DIR von systemd / pam gehalten wird, so dass es nicht in Dockers oder andere nicht-systemd Umgebungen eingestellt werden.

Sie können so etwas tun in ~ / .bashrc, wenn Sie mögen:

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

Siehe auch: https://standards.freedesktop.org/basedir-spec/basedir- spec-latest.html https://www.freedesktop.org/wiki/

Auch - es scheint mir einige Einschränkungen mit XDG_RUNTIME_DIR und sudo: https: // unix.stackexchange.com/questions/346841/why-does-sudo-i-not-set-xdg-runtime-dir-for-the-target-user

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top