我编写了一个简短的bash脚本来完成一项任务,该任务涉及创建一个临时目录并在其中存储各种文件并对其执行各种操作。
在我的第一遍中,我刚刚在/tmp/$$.$script创建了临时目录,但后来我在没有写入/ tmp /的访问权限的计算机上测试了脚本,我就是喜欢考虑这个案例。所以我的问题是这个临时目录的第二个好位置?我应该只使用当前目录吗?主目录?〜/ tmp /?脚本的输出位置?
所有创建的文件都会在脚本退出时清除。
答案 0 :(得分:7)
许多系统也有/var/tmp
。如果系统管理员不希望您写入/tmp
,可能是他们提供了一些替代方法...... $TMPDIR
环境变量是否已设置?例如,在我的Mac上:
$ echo $TMPDIR
/var/folders/jf/jfu4pjGtGGGkUuuq8HL7UE+++TI/-Tmp-/
答案 1 :(得分:5)
我建议〜/。[你的脚本名称] / tmp,如果没有设置TMPDIR,而不是〜/ tmp /,因为用户可能已经自己创建了(并且你可能不想意外覆盖有)。
就像bash中的袖口一样 -
case $TMPDIR in '') tmp_dir=".${0}/tmp";; *) tmp_dir=$TMPDIR;; esac
答案 2 :(得分:4)
使用$ {TMPDIR: - / tmp}(如果未设置$ TMPDIR,则为$ TMPDIR或/ tmp)。如果那不可写,则退出并显示错误,或询问用户输入定义它。我认为询问用户临时文件应该去哪里比假设某个地方更好,如果你的进程被杀了就把它们留在那里。
答案 3 :(得分:2)
您可以尝试使用mktemp(假设它已为系统正确配置)
e.g。
MYTMPDIR=$(mktemp -d)
答案 4 :(得分:1)
您可以尝试/var/tmp
,尽管/tmp
可能是符号链接(或反之亦然)。