1. 概述
Linux 中默认的临时目录位于 /tmp 下,本文我们将介绍2种方式修改默认路径。
2. 方法一:修改环境变量
方法一,我们可以通过修改环境变量。
应用通常通过环境变量读取临时文件目录,有三个常用的环境变量:
- $TEMP
- $TMP
- $TMPDIR
下面我们使用 export 命令设置环境变量,并测试:
$ export TMP=/home/baeldung/temp
$ mktemp
/tmp/tmp.nA4AHrA010
$ export TEMP=/home/baeldung/temp
$ mktemp
/tmp/tmp.klx300K667
$ export TMPDIR=/home/baeldung/temp
$ mktemp
/home/baeldung/temp/tmp.x666010MXU
其中 mktemp 命令是用于建立临时文件。
可以看到,我们分别使用了3个环境来进行测试,但 只有 $TMPDIR 变量对 mktemp 生效了。
不同的应用支持的变量名不一样,如 Python 使用上述所有环境变量来推断系统的临时目录,优先级如下:
- $TMPDIR
- $TEMP
- $TMP
- /tmp
有些应用使用 $TEMP 和 $TMP,但优先考虑 $TMPDIR,因为 **$TMPDIR 属于POSIX标准**:
3. 方法二: 创建软链接
我们可以通过 link 创建软连接,改变实际目录或引用路径,尽管存在潜在的副作用。
3.1. 链接到 /tmp
例如,应用程序可能会使用 /var/app/tmp 而不是系统的默认临时目录。在这种情况下,我们可以通过使用 ln 来避免更改环境变量:
$ mv /var/app/tmp/* /tmp
$ rm --recursive --force /var/app/tmp
$ ln --symbolic /tmp /var/app/tmp
- 将所有数据从 /var/app/tmp 移动到 /tmp
- 删除 /var/app/tmp
- 创建软连接,从 /var/app/tmp 指向 /tmp
这样,我们的应用程序应该能够直接使用 /tmp
3.2. 为 /tmp 创建软链接
另外我们也可 删除 /tmp 创建软连接,指向其他位置:
$ mkdir /xtmp
$ chmod 1777 /xtmp
$ chown root:root /xtmp
$ cp /xtmp/* /tmp
$ rm --recursive --force /tmp
$ ln --symbolic /xtmp /tmp
然而,这种方法仍然存在一些缺陷:
- /tmp 通常是独立分区的挂载点,需要涉及 /etc/fstab 的进一步步骤
- /tmp 必须具有正确的权限,以避免问题
- 根据 /xtmp 背后的分区被挂载的时间,早期的引导服务可能会失败
- 使用链接代替 /tmp 可能会为一些应用程序带来问题
如果我们考虑到上述所有问题,这仍然是一个可行的解决方案。
4. 总结
在本文中,我们探讨了更改Linux临时目录路径的方法。
总之,只要应用程序检查它们,我们就可以通过环境变量告诉应用程序使用另一个路径来存储临时文件。然而,我们总是有改变指向 /tmp 的内容和 /tmp 自身指向的替代方案。