Exporting Fish aliases for faster startup times

It turns out Fish aliases are quite slow, and often recommended against including in config.fish . The following works around that by lazy-loading them as functions while still allowing a single aliases file that can be shared among other POSIX shells:

source $ HOME /.aliases for alias in ( grep -o " ^alias \b\w+\b " $ HOME /.aliases | cut -c 7-) funcsave $ alias end

This can be run as-needed, or automatically with a terminal setup using tmux as described in this post. For example, I have this in my config file:

if status is-login if test -f $ HOME /.aliases source $ HOME /.aliases # Export aliases for lazy-loading in child shells. for alias in ( grep -o " ^alias \b\w+\b " $ HOME /.aliases | cut -c 7-) funcsave $ alias end end if test -f $ HOME /.functions.fish source $ HOME /.functions.fish # Export functions for lazy-loading in child shells. for func in ( grep -o " function \b\w+\b " $ HOME /.aliases.fish | cut -c 10-) funcsave $ func end end end

My full fish config is available here.