TMP环境变量发生了什么变化?

boa*_*der 27 bash tmp

我总是听说在UNIX机器上找到临时文件夹的正确方法是查看TMP环境变量.在编写适用于Windows和Linux的代码时,我会检查TEMP和TMP.

今天,我发现我的Ubuntu安装根本就没有这个环境变量.

我知道你似乎总是可以依靠/ tmp来存放临时文件,但我知道TMP是用户可以告诉你将临时文件放在其他地方的方式.

那还是这样吗?

Alo*_*hal 16

你可能在考虑TMPDIR.

此变量应表示可用于需要创建临时文件的位置的程序的目录的路径名.

  • 我的Ubuntu LTS Server 12.04和14.04的默认安装没有任何关于临时目录的环境变量,既没有TMPDIR,也没有TMP或TEMP,即使在某些地方记录了TMPDIR.最后,这个变量似乎不再可靠(不再). (6认同)
  • 有后备:`TMPDIR="{${TMPDIR:-$(dirname $(mktemp))/}"` (2认同)

Chr*_*her 12

创建临时目录的好方法是使用mktemp,例如

mktemp -d -t
Run Code Online (Sandbox Code Playgroud)

这样,您甚至可以确保您的文件名不会与现有文件冲突.

  • 这是一个很好的答案,但它不是上述问题的答案. (5认同)

Ign*_*ams 10

POSIX/FHS说这/tmp是临时文件的根源,尽管有些程序可能会选择检查$TEMP$TMP替代.


Tom*_*eba 5

与@Chris Lercher 所说的类似,我发现这对我有用:

dirname $(mktemp -u -t tmp.XXXXXXXXXX)
Run Code Online (Sandbox Code Playgroud)

这实际上不会创建临时文件(因为 mktemp 的 -u 标志),但它会给你临时文件将被写入的目录。此代码段适用于 OSX 和 Ubuntu(也可能是其他 *nix)。

如果要将其设置为变量,请执行以下操作:

TMPDIR=`dirname $(mktemp -u -t tmp.XXXXXXXXXX)`
Run Code Online (Sandbox Code Playgroud)

  • 或者简单地说:`dirname $(mktemp -u)`。 (4认同)