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
.