3

我编写了一个简短的 bash 脚本来完成一项任务,该任务涉及创建一个临时目录并在其中存储各种文件并对其执行各种操作。

在我的第一遍中,我刚刚在 /tmp/$$.$script" 处创建了临时目录,但随后我在没有 /tmp/ 写入权限的计算机上测试了该脚本,我想采取考虑到这种情况。所以我的问题是这个临时目录的一个好的辅助位置在哪里?我应该只使用当前目录吗?主目录?~/tmp/?脚本的输出位置?

所有创建的文件都会在脚本退出时被清理。

4

5 回答 5

7

许多系统还具有/var/tmp. 如果系统管理员不想让你写信/tmp,大概他们已经提供了一些替代方案……$TMPDIR环境变量设置了吗?例如,在我的 Mac 上:

$ echo $TMPDIR
/var/folders/jf/jfu4pjGtGGGkUuuq8HL7UE+++TI/-Tmp-/
于 2008-10-05T20:07:37.843 回答
5

如果没有设置 TMPDIR,我建议使用 ~/.[your script name]/tmp,而不是 ~/tmp/,因为用户可能自己创建了它(并且您可能不想意外覆盖其中的内容)。

就像 bash 中的即兴想法一样——

case $TMPDIR in '') tmp_dir=".${0}/tmp";; *) tmp_dir=$TMPDIR;; esac
于 2008-10-05T20:24:54.500 回答
4

使用 ${TMPDIR:-/tmp}(如果 $TMPDIR 未设置,则使用 $TMPDIR 或 /tmp)。如果那不可写,则退出并显示错误,或者要求用户输入定义它的输入。我认为询问用户临时文件应该去哪里比假设某个地方并在你的进程被杀死时将它们留在那里更可取。

于 2008-10-05T20:34:41.703 回答
2

您可以尝试使用mktemp(假设它已为系统正确配置)

例如 MYTMPDIR=$(mktemp -d)

于 2008-10-05T20:59:38.580 回答
1

您可以尝试/var/tmp,尽管这很可能/tmp是一个符号链接(反之亦然)。

于 2008-10-05T20:07:11.573 回答