Na prática, /tmp
é praticamente garantido de existir. No entanto, mesmo que exista, isso não significa que você deve colocar arquivos temporários lá.
A convenção padrão é usar a variável de ambiente TMPDIR
. Se existir, aponta para um diretório para arquivos temporários. Se não existir, coloque arquivos temporários em /tmp
.
Em um script de shell, você pode usar "${TMPDIR:-/tmp}"
como o local do arquivo temporário: isso se expande para o valor de TMPDIR
se for set¹ e para /tmp
caso contrário. Ou você pode definir TMPDIR
condicionalmente caso não seja definido, com o comando
: "${TMPDIR:=/tmp}"
e, em seguida, crie arquivos temporários dentro de "$TMPDIR"
.
Observe que qualquer aplicativo pode criar arquivos em /tmp
ou $TMPDIR
. Além disso, esse diretório pode ser compartilhado entre usuários, portanto, você precisa ter cuidado com as permissões ao criar um arquivo. Muitos sistemas (Linux, * BSD) têm um comando mktemp
que cria arquivos com segurança no diretório correto. Geralmente é uma boa idéia usar mktemp
para criar arquivos e diretórios temporários - especialmente a partir de um shell script, onde é impossível criar um arquivo com segurança em um diretório compartilhado devido à possibilidade de ataques de links simbólicos ( mkdir
é bom se você manipular erros corretamente).
¹ e não-vazio - se a variável estiver vazia, então não é utilizável como é de qualquer maneira, e geralmente é uma boa ideia tratar variáveis vazias ou não definidas da mesma forma se elas supostamente contiverem um nome de arquivo.