Se você precisar escrever alguns arquivos temporários que duram apenas enquanto o script ou o aplicativo estiver em execução, use o diretório indicado pelo variável de ambiente TMPDIR
ou, se essa variável não estiver definida, /tmp
.
/tmp
é limpo no momento da inicialização em alguns sistemas (às vezes até na RAM, por exemplo, no Solaris e em algumas instalações do Linux), por isso não pode ser usado para arquivos que precisam sobreviver a uma falha de energia ou a uma reinicialização . /var/tmp
pode ser usado para arquivos que devem sobreviver a uma reinicialização, mas isso pode ser limpo pelo administrador do sistema de tempos em tempos. Se seu aplicativo precisar salvar arquivos permanentemente, escreva-os em algum lugar no diretório pessoal do usuário (em ~/.programmingnoobsapp
ou ~/.cache/programmingnoobsapp
) ou em /var/lib/programmingnoobsapp
ou /var/cache/programmingnoobsapp
.
Observe que /tmp
é compartilhado entre todos os usuários, portanto, você precisa tomar precauções ao criar um arquivo lá. Você precisa escolher um nome de arquivo que ainda não existe, e você precisa ter cuidado para não permitir uma condição de corrida em que outro processo cria o arquivo à frente com permissões diferentes, o que poderia ser uma falha de segurança (se o outro processo está sendo executado como um usuário diferente, ele pode acessar e modificar os dados do processo). Use o comando mktemp
para criar um arquivo em /tmp
ou /var/tmp
. Por padrão, mktemp
cria um arquivo em $TMPDIR
ou /tmp
se TMPDIR
não está definido, o que geralmente é o lugar certo. Se você precisar usar vários arquivos temporários ou até mesmo precisar de um, recomendo criar um diretório para todos os arquivos temporários com mktemp -d
e removê-lo no final do script.
#!/bin/sh
tmp_root=
trap 'rm -rf "$tmp_root"' EXIT INT TERM HUP
tmp_root=$(mktemp -d)
tmpfile1=$tmp_root/file1
tmpfile2=$tmp_root/file2
…