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 TMPDIRvariá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/tmppode 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 ~/.programmingnoobsappou ~/.cache/programmingnoobsapp) ou em /var/lib/programmingnoobsappou /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 mktempcomando para criar um arquivo em /tmpou /var/tmp. Por padrão, mktempcria um arquivo $TMPDIRou, /tmpse TMPDIRnã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
…