Using chsh or similar to change your default shell to a non-POSIX one might cause unexpected issues. Instead, insert this near the top of your ~/.bashrc and it will automatically launch fish for login shells without modifying the system default.
if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && -x $(which fish) ]]; then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=''
exec fish $LOGIN_OPTION
fi