Tenho o zsh e o oh-my-zsh instalados, mas meu terminal ( xfce4-terminal
no EndeavourOS (baseado em Arch)) sempre inicia em bash
.
relate perguntas
-
Listar arquivos que não possuem outro arquivo com sufixo
-
Em que circunstâncias o executável encontrado primeiro no caminho não será usado
-
Symlinking para todos os arquivos de ponto e diretórios
-
Como incrementar uma variável nomeada dinamicamente em `zsh`
-
Por que não consigo definir uma variável somente leitura chamada path no zsh?
A maioria dos emuladores de terminal inicia o shell cujo nome ou caminho é armazenado na
$SHELL
variável de ambiente, geralmente definida no login do shell de login do usuário no banco de dados da conta (veja a saída deperl -le 'print((getpwuid$<)[8])'
ougetent -- passwd "$LOGNAME" | cut -d: -f7
) e se não houver tal variável, geralmente o shell de login do usuário ou/bin/sh
(o primeiro paraxfce4-terminal
a menos que haja umcustom-command
configurado).Alguns emuladores de terminal têm arquivos de personalização que podem substituir isso ou alterar o padrão (como
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-terminal.xml
paraxfce4-terminal
o qual é editado por alguma caixa de diálogo GUI de preferência ), ou têm configurações em bancos de dados de configuração de toda a área de trabalho (procurecustom-command
por exemplo na saída dedconf dump /org/gnome/terminal/
para ognome-terminal
emulador) ou possivelmente em recursos X11 (que podem ser definidos na linha de comando, em algum~/.Xdefaults-$HOSTNAME
ou algumapp-defaults
arquivo ou carregados no servidor X com coisas comoxrdb
; a saída deappres
exrdb -q
pode ser usada para consultá-los).Provavelmente, no seu caso, seu shell de login ainda está lá
/bin/bash
(que é o padrão na maioria dos sistemas GNU/Linux, assimbash
como o shell do projeto GNU) e você só precisa alterá-lo para/bin/zsh
ou qualquer caminho quezsh
esteja listado em/etc/shells
(veja a saída degrep zsh /etc/shells
) comchsh
(oupasswd -s
em alguns sistemas).Se você não puder alterar seu shell de login porque, por exemplo, você está em um ambiente empresarial e sua conta é administrada centralmente e os administradores não permitem que você altere seu shell ou
zsh
não está entre os shells permitidos (embora, nesse caso, eu esperaria que você não conseguisse instalar software em todo o sistema), você gostaria de ter certeza de que a$SHELL
variável está definida para/bin/zsh
upon login. Em alguns ambientes, isso pode ser feito adicionandoSHELL=/bin/zsh
a some~/.environment
ou~/.pam_environment
.Essa abordagem não funcionará no terminal virtual do Linux fora de qualquer ambiente de desktop. Nesse caso, se você não puder alterar seu shell de login, a única abordagem é ter
bash
startzsh
upon login, o que você pode fazer adicionando (assumindozsh
que foi instalado em/bin
seu sistema):No início de
~/.bash_profile
. Isso define$SHELL
incondicionalmente para que coisas como emuladores de terminal ou editores iniciados dentro dessa sessão saibam que devem ser iniciadoszsh
em vez do seu shell de login e também sejam executadoszsh
como um shell de login sebash
forem iniciados interativamente como um shell de login (somente instâncias bash invocadas como um shell de login lêem~/.bash_profile
).Para emuladores de terminal em ambientes de desktop gráficos, se todo o resto (usar
chsh
, definir$SHELL
no login, configurar o emulador de terminal manualmente) falhar, você pode adicionar o mesmo código sem o , para-a -zsh
que~/.bashrc
executar o bash interativamente acabe executandozsh
.