Por que meu shell padrão de / etc / passwd não foi iniciado por terminais em uma sessão Unity?

5

Estou tentando definir fish como meu shell padrão. Está instalado no sistema através do apt-get e está listado em /etc/shells :

> which fish
/usr/bin/fish
> grep fish /etc/shells
/usr/bin/fish

Eu usei chsh para mudar de Bash para fish:

> chsh -s /usr/bin/fish

E meu shell padrão foi alterado em /etc/passwd :

> grep "myusername" /etc/passwd
myusername:x:1000:1000:Oh Spite,,,:/home/myusername:/usr/bin/fish

impressionante. Então eu fiz o logout e reiniciei. Os shells de login (por exemplo, TTYs e SSH virtuais) agora começam a pescar.

E, no entanto, quando inicio um terminal com gnome-terminal ou urxvt, uma sessão bash é iniciada. Além disso, a variável SHELL ainda está definida como /bin/bash .

Curiosamente, o Terminator faz usar fish como o shell padrão. Mas mesmo nessa sessão SHELL está definido como /bin/bash . Se eu começar o urxvt a partir do Terminator, o urxvt iniciará uma sessão de Bash.

O que mais eu preciso fazer para mudar meu shell padrão para pescar?

(Veja também esta questão , mas isso não é uma duplicata porque eu segui essas instruções e reiniciadas. Muitas vezes agora.

    
por ohspite 18.08.2015 / 23:24

2 respostas

3

A maioria dos terminais (pelo menos gnome-terminal, urxvt e XTerm, por exemplo) iniciados em um ambiente de desktop como o Unity usarão a variável de ambiente SHELL para selecionar o shell quando forem iniciados.

SHELL deve ser automaticamente definido como seu shell padrão listado em /etc/passwd , mas a variável pode ser substituída quando você efetuar login. Certifique-se de não ter definido SHELL=/bin/bash ou algo semelhante em um arquivo que afetará sua sessão de desktop inteira. Esses arquivos incluem:

  • ~/.profile
  • ~/.pam_environment
  • /etc/environment
  • talvez alguns outros arquivos editados pelos usuários do Ubuntu com menos frequência, como /etc/profile

Além disso, se algum script como ~/.bashrc ou ~/.bash_profile for chamado por esses outros arquivos de inicialização e houver uma linha export SHELL=/bin/bash , isso também afetará toda a sessão da área de trabalho.

Eu sei que é aceitável / encorajado, mas eu ainda odeio responder minha própria pergunta. No entanto, isso pode ser de alguma utilidade para alguém no futuro. Obrigado a @heemayl e @muru por me ajudarem a investigar.

    
por ohspite 19.08.2015 / 02:28
1

Para definir fish como o shell padrão para gnome-terminal , de gnome-terminal , vá para:

Edit > Profile Preferences

em seguida, vá para a guia Title and Command , você verá:

Altere como:

Agora, sempre que você iniciar uma nova instância de gnome-terminal , fish será iniciado em vez de bash .

    
por heemayl 18.08.2015 / 23:45