Eu gosto de muitos dos meus scripts de shell portáveis e independentes de shell, então eu prefiro prender EXIT sobre o uso do método bash-específico .bash_logout. E para uma solução verdadeiramente independente, é melhor não ter que modificar ou criar .bash_logout, nem confiar em um script separado para ser executado na saída. E, claro, muito pior seria modificar ou ignorar o que o comando "exit" faz no sistema - a solução não deve afetar ninguém!
Portanto, para um impacto mínimo em sistemas externos, meu método preferido é colocar um perfil de login personalizado sempre que eu começar a trabalhar em um sistema, e ter o mesmo perfil limpo em si e quaisquer scripts auxiliares ou arquivos de configuração criados por ele. Eu então fonte esse perfil (usando ".", Que funciona em ksh também), que configura todos os meus aliases etc. - mas eu não quero ficar por perto quando eu terminar.
Então eu crio uma função de shell "bye" no próprio script que executa a dita limpeza, e a registro para limpeza automática no logout, seja intencional ou por simples desconexão, via:
trap bye EXIT
Isso garante que eu não estou deixando traços feios do meu trabalho para trás. Qual limpeza específica deve ser feita por você, o "make clean" específico do diretório é apenas uma das muitas possibilidades. E uma vez que o logout tenha ocorrido por qualquer meio, todos os traços do perfil incluindo até mesmo a função de limpeza desaparecerão.
Você pode ir um passo além - talvez haja diferentes tipos de sistemas nos quais você deseja que tipos diferentes de limpeza ocorram, ou em alguns sistemas você não quer que esse tipo de limpeza ocorra. Você pode construir comutadores na função shell "bye", ou criar diferentes "bye1", "bye2" e registrar o desejado com base em algum teste, por ex. a existência de algum arquivo. É assim que evito a exclusão do meu perfil personalizado em sistemas que uso a longo prazo, onde quero manter o mesmo perfil.