Quando você faz login, o arquivo ~/.profile
é lido pelo shell de login (ksh para você). Você pode instruir esse shell de login a se substituir pelo bash. Você deve tomar algumas precauções:
- Substitua o shell de logon apenas se for interativo. Isso é importante: caso contrário, o login no modo gráfico pode não funcionar (isso depende do sistema: alguns, mas nem todos os sistemas leem
~/.profile
ao efetuar o login através do xdm ou similar), e expressões idiomáticas, como ssh foo '. ~/.profile; mycommand'
falharão.
- Verifique se o bash está disponível, para que você ainda possa efetuar login se o executável não estiver lá por algum motivo.
Você tem a opção de executar o bash como um shell de login ou não. A única grande diferença em torná-lo um shell de login é que ele carregará ~/.bash_profile
ou ~/.profile
. Portanto, se você executar o bash como shell de login, tenha muito cuidado para ~/.bash_profile
não executar o bash recursivamente ~/.profile
. Não há nenhuma vantagem real de ter sido ~/.profile
executado pelo bash em vez do ksh, então eu recomendo não fazê-lo.
Defina também a SHELL
variável de ambiente como bash, para que programas como emuladores de terminal invoquem esse shell.
Aqui está o código para mudar para o bash. Coloque no final de ~/.profile
.
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac
Gilles 'SO- parar de ser mau'
fonte
.profile
só funciona para o shell de logon (conforme a necessidade do OP). Eu uso a Conexão de área de trabalho remota do Windows 10 para fazer login em uma estação de trabalho Linux e, em seguida, abra o Terminal no gnome. Eu querozsh
enquanto meu administrador de sistemas me derbash
. Nesse caso, tenho que adicionar o trecho em.bashrc
vez de.profile
.Isso é um pouco desagradável, mas você pode causar
bash
o shell que está usando no login, criando um.profile
arquivo em seu diretório pessoal, contendoIsso fará com que a
ksh
sessão seja substituída por umabash
sessão. Você não precisará digitarexit
(ou^D
) duas vezes, como faria se tivesse iniciado manualmente uma novabash
sessão sempre que fizer login. E digitandoretornará o caminho para
bash
.fonte
exec bash -l
.type
é recomendado ao longowhich
.bash
Também não vai ler.profile
, gerando um loop infinito? Concordo que algo do tipoexec bash
é o que você deseja, mas você precisa fazer isso apenas no seu login ksh, para que algumas instruções if sejam necessárias!~/.bash_profile
ou~/.bash_login
A resposta de Giles deve ter o sinalizador -l adicionado ao executar o bash, para que qualquer script de perfil de login seja originado no novo shell do bash. (Por exemplo, qualquer coisa em /etc/profile.d/ no RHEL). O script deve então ser:
fonte
-l
opção? Eu uso isso há meses sem problemas.Uma resposta
csh/tcsh
inspirada no top votado por @Gilles éfonte
Solaris:
fonte