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.