/** \page faq Frequently asked questions - Why does cd, pwd and other fish commands always resolve symlinked directories to their canonical path? - Why does the cd command autocompletion list the subdirectories of my home directory as completions? - I accidentally entered a directory path and fish changed directory. What happened? - The open command doesn't work. - How do I make fish my default shell? - I'm seeing weird output before each prompt when using screen. What's wrong? - How do I change the greeting message?
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 function fish_title;end ~/.config/fish/config.fishProblem solved! The long answer: Fish is trying to set the titlebar message of your terminal. While screen itself supports this feature, your terminal does not. Unfortuntaly, when the underlying terminal doesn't support setting the titlebar, screen simply passes through the escape codes and text to the underlying terminal instead of ignoring them. It is impossible detect and resolve this problem from inside fish since fish has no way of knowing what the underlying terminal type is. For now, the only way to fix this is to unset the titlebar message, as suggested above. Note that fish has a default titlebar message, which will be used if the fish_title function is undefined. So simply unsetting the fish_title function will not work.
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.
set fish_greeting*/