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
…