Because it is impossible to consistently keep symlinked directories unresolved. It is indeed possible to do this partially, and many other shells do so. But it was felt there are enough serious corner cases that this is a bad idea. Most such issues have to do with how '..' is handled, and are varitations of the following example:
Writing cd images; ls ..
given the above directory structure would list the contents of ~/Documents, not of ~, even though using cd ..
changes the current direcotry to ~, and the prompt, the pwd builtin and many other directory information sources suggest that the the current directory is ~/images and it's parent is ~. This issue is not possible to fix without either making every single command into a builtin, breaking Unix semantics or implementing kludges in every single command.
This issue can also be seen when doing IO redirection.
Another related issue is that many programs that operate on recursive directory trees, like the find command, silently ignore symlinked directories. For example, find $PWD -name '*.txt'
silently fails in shells that don't resolve symlinked paths.
set CDPATH .
on the commandline.
~
.
echo /usr/local/bin/fish >>/etc/shells
If you installed a prepackaged version of fish, the package manager should have already done this for you.
In order to change your default shell, type:
chsh -s /usr/bin/fish
You may need to adjust the above path to e.g. /usr/local/bin/fish.
You will need to log out and back in again for the change to take effect.