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.