Antes de mais nada, certifique-se de que seu bash favorito esteja em $PATH antes do sistema um. Defina também a variável de ambiente SHELL para o caminho completo do seu shell interativo favorito (presumivelmente sua própria versão instalada do bash).
Você não pode configurar seu próprio shell como shell de login sem a intervenção do root, mas geralmente você não precisa de nada melhor do que o POSIX sh in ~/.profile de qualquer maneira. Você pode colocar exec $SHELL no final de ~/.profile para obter seu shell interativo favorito em sessões de console ou ssh, mas certifique-se de não fazê-lo a partir de shells que não sejam interativos (por exemplo, algumas distribuições Linux tem scripts de sessão X que começam com #!/bin/bash --login ). É difícil detectar precisamente quando é razoável chamar exec em .profile , mas o teste de que o shell é interativo funciona na maioria dos casos; você pode fazer algo assim:
case $- in
*i*) :;;
*) exec "$SHELL";;
esac
Se você não é root, é tudo o que você pode fazer. Em particular, os scripts com cabeçalho #!/bin/bash continuarão usando o bash do sistema, enquanto os scripts com o cabeçalho #!/usr/bin/env bash usarão o seu.
Se você for root, poderá adicionar sua instalação bash a /etc/shells , após o qual você poderá usar chsh para alterar seu shell de login para ela. Você também pode substituir /bin/bash pela sua própria versão, mas eu não recomendaria isso para um componente de sistema tão crítico. Se você realmente quer substituir /bin/bash , pelo menos mantenha o gerenciador de pacotes feliz; em um sistema baseado em dpkg, você pode usar dpkg-divert .