set -x fish_greeting ""
You probably meant set -U because you probably don't want to export fish_greeting to child processes. fish_greeting is already universal though and you don't need the empty string to unset it. This is enough:
set fish_greeting
its annoying having
Welcome to fish, the friendly interactive shell Type help for instructions on how to use fish
come up all the time