如何将默认 /tmp 更改为 /home/user/tmp

Dis*_*sco 18 linux java environment-variables tmp

是否有环境变量可以在基于 debian 的系统上设置临时目录?

我有一个使用该环境变量的 Java 小程序,并且在启动同一个小程序的两个实例时会感到困惑。

Tru*_*ity 19

我不确定 java 小程序是否会在启动之前实际查看环境变量,但是您可以做什么编辑 /etc/profile 并添加以下行:

if [[ -O /home/$USER/tmp && -d /home/$USER/tmp ]]; then
        TMPDIR=/home/$USER/tmp
else
        # You may wish to remove this line, it is there in case
        # a user has put a file 'tmp' in there directory or a
        rm -rf /home/$USER/tmp 2> /dev/null
        mkdir -p /home/$USER/tmp
        TMPDIR=$(mktemp -d /home/$USER/tmp/XXXX)
fi

TMP=$TMPDIR
TEMP=$TMPDIR

export TMPDIR TMP TEMP
Run Code Online (Sandbox Code Playgroud)

要使其成为真正的 tmp 目录(因为在会话结束时文件消失,您需要编辑用户的 .bash_logout 以及骨架 .bash_logout (/etc/skel/.bash_logout) 以包含以下内容:

if [ -O $TMPDIR && -d $TMPDIR ]; then
        rm -rf $TMPDIR/*
fi
Run Code Online (Sandbox Code Playgroud)

注销部分很危险,因为变量没有被设置并且你以 root 身份登录!我不会将此添加到 root 帐户或任何属于 Wheel 组成员的人!请谨慎行事。

  • 我根本不会把清理工作放到 .bash_logout 中——如果他们打开两个会话并注销一个会话会发生什么?使用 tmpwatch。:) (3认同)

cst*_*mas 9

您要查找的文件是:

/etc/environment
Run Code Online (Sandbox Code Playgroud)

您必须设置 TEMP 变量,如:

TEMP=/home/user/tmp
Run Code Online (Sandbox Code Playgroud)

  • 甚至`export TEMP=/home/user/tmp` (3认同)