Se você precisar gravar alguns arquivos temporários que duram apenas enquanto o script ou aplicativo estiver em execução, use o diretório indicado pela TMPDIR
variável de ambiente 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), portanto não pode ser usado para arquivos que precisam sobreviver a uma falha de energia ou reinicialização. /var/tmp
pode ser usado para arquivos que precisam sobreviver a uma reinicialização, mas que podem ser limpos pelo administrador do sistema periodicamente. Se seu aplicativo precisar salvar arquivos permanentemente, escreva-os em algum lugar no diretório inicial 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, é necessário tomar precauções ao criar um arquivo lá. Você precisa escolher um nome de arquivo que ainda não exista e ter cuidado para não permitir uma condição de corrida em que outro processo crie o arquivo à sua frente com permissões diferentes, o que poderia ser uma falha de segurança (se o outro processo estiver sendo executado como um usuário diferente, ele poderá acessar e modificar os dados do seu processo). Use o mktemp
comando para criar um arquivo em /tmp
ou /var/tmp
. Por padrão, mktemp
cria um arquivo $TMPDIR
ou, /tmp
se TMPDIR
não estiver definido, geralmente é o lugar certo. Se você precisar usar vários arquivos temporários, ou mesmo se precisar de um único, recomendo a criação de um diretório para todos os seus arquivos temporários commktemp -d
e removê-lo no final do seu 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
…