1
0
Fork 0
my fish shell configuration
  • Shell 98.5%
  • Makefile 1.5%
Find a file
2026-03-03 21:53:51 -08:00
completions update mise completion 2026-02-11 21:33:40 -08:00
conf.d gcd abbr 2025-10-22 13:20:53 -07:00
functions sshup: load all private keys 2026-03-03 21:53:51 -08:00
plugins update-plugins 2025-03-18 14:49:40 -07:00
themes 4.3.0 themes file syntax 2026-01-06 15:03:20 -08:00
.gitignore k8s prompt dimming 2024-10-21 15:54:41 -07:00
.gitmodules plugins 2024-09-13 15:04:06 -07:00
config.fish conf.d split out 2025-03-18 14:48:48 -07:00
LICENSE LICENSE 2024-09-30 10:42:20 -07:00
Makefile Makefile 2024-11-14 11:47:30 -08:00
README.md expr is slow 2025-05-30 15:43:56 -07:00

To use, clone to ~/.config/fish and run make to download any plugin submodules.

I have /bin/sh set as my user login shell. My ~/.profile is used upon login and a ~/.config/sh/env is sourced for interative shells, which does exec fish. This avoids any issues with your login shell or SHELL being non-POSIX.

# ~/.profile
# If the shell is interactive, this file will be sourced, too.
# Make sure this file is private: `chmod 600 $ENV`
ENV="${HOME}/.conifg/sh/env"

# Cache the result of `uname` (it never changes) instead of
# needing to repeatedly invoke it in scripts.
UNAME="$(uname)"

export ENV UNAME
# ~/.config/sh/env
if [ "x$(printf %.1s "$0")" = x- ]; then
  exec fish -l
else
  exec fish
fi