kb:tools:fish:start
Fish
Changelog
- 2025-01-31: Init
A nice guide on ArchWiki. A configuration for Bash:
- .bashrc
# Drop in to fish shell if: # 1. Parent shell is not fish # 2. Not executing a bash command, e.g. 'bash -c' if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]] then shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' exec fish $LOGIN_OPTION fi
Commentary on the fish shell by Julia initially, more recently, and on modern terminal setups.
A checklist for new users (like me) to configure Fish:
- Run
fish_config
to configure via a web browser.
Also apparently dotfiles are a thing: https://dotfiles.github.io/
Also Bass might be interesting: https://github.com/edc/bass
set -U fish_greeting
Others
- VSCode's remote SSH extension (as of 2025-02-10) does not play well with a default Fish shell on the remote side. Either modify the way
.bashrc
checks whether to activate the Fish shell, or on the client side VSCode setremote.SSH.useLocalServer = false
in the workspace configuration. - Installing fish on old OpenSUSE might be a bit difficult (fish:v2.7.1).
- First to resolve is the automated web browser opening requirement, which can be disabled by commenting out the
webbrowser.open
line in /usr/share/fish/tools/web_config/webconfig.py. - Extract the localhost path stored in /root/.cache/fish/web_config-*.html, then forward the default :8000 port and use the web config.
- Prompt may fail when using the web config. Insert it manually at .config/fish/functions/fish_prompt.fish. A simple I like, using the interactive prompt as base and substituting the
$PWD
for(prompt_pwd)
- .config/fish/functions/fish_prompt.fish
function fish_prompt --description 'Informative prompt' #Save the return status of the previous command set -l last_pipestatus $pipestatus set -lx __fish_last_status $status # Export for __fish_print_pipestatus. if functions -q fish_is_root_user; and fish_is_root_user printf '%s@%s %s%s%s# ' $USER (prompt_hostname) (set -q fish_color_cwd_root and set_color $fish_color_cwd_root or set_color $fish_color_cwd) \ (prompt_pwd) (set_color normal) else set -l status_color (set_color $fish_color_status) set -l statusb_color (set_color --bold $fish_color_status) #set -l pipestatus_string (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) printf '[%s] %s%s@%s %s%s %s \n> ' \ (date "+%H:%M:%S") \ (set_color brred) $USER (prompt_hostname) \ (set_color $fish_color_cwd) (prompt_pwd) \ (set_color normal) end end
kb/tools/fish/start.txt · Last modified: 41 hours ago (19 February 2025) by justin