Você está fazendo errado. Você deve estar usando o comando chsh
para alterar o shell do usuário.
$ chsh -s /usr/local/bin/fish
OSX
No OSX, você aparentemente tem que adicionar isso ao arquivo /etc/shells
, conforme descrito nesta edição, intitulado: OS X se recusa a definir peixes como shell padrão (instalado via Homebrew) # 989 .
Para fazer isso, você precisa executar este comando para adicioná-lo a /etc/shells
:
$ echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
Depois disso, esse arquivo ficará assim:
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
/usr/local/bin/fish
Com o acima completo, tente o comando chsh -s ...
novamente e ele deve funcionar.
Por quê?
Esse problema parece surgir com a forma como fish
foi instalado. Se você usa brew install fish
, é provável que fish
tenha sido adicionado corretamente a /etc/shells
. Se você instalar o fish
por algum outro meio, é provável que ele não tenha sido incluído como uma entrada no arquivo /etc/shells
.
Problema secundário
Em alguns casos, as permissões do próprio /etc
podem ser o problema.
$ ll /etc
lrwxr-xr-x@ 1 root wheel 11B Jan 26 2016 /etc -> private/etc
$ ll -d private/etc/
drwxr-xr-x 96 root wheel 3.2K Jul 12 18:53 private/etc/
Essas permissões são aceitáveis, se não forem, você pode modificá-las assim:
$ sudo mount -uw /
$ sudo chmod a+x private/etc
Com as alterações acima, chsh -s ...
deve funcionar agora.