A modern, ergonomic Unix shell configuration with Fish

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • fisher

    A plugin manager for Fish

  • #!/usr/bin/env fish # Configure my shell's prompt starship init fish | source # Make it easy to switch to commonly-used directories zoxide init fish | source # Set up my ruby environment with rbenv status --is-interactive; and source (rbenv init -|psub) set -gx PATH "$HOME/.rbenv/bin" $PATH # Use VS Code as the default editor and block until the file is closed set -x EDITOR 'code --wait' # Make skim do the right thing by default set -x SKIM_DEFAULT_COMMAND "fd --type f" ## Elixir and Erlang # Elixir package timeout to prevent stalled downloads set -x HEX_HTTP_TIMEOUT 59 # Elixir IEx history config set -x ERL_AFLAGS '-kernel shell_history enabled' ## Rust # Enable a shared Cargo target directory to cut down on disk usage set -x CARGO_TARGET_DIR $HOME/.cargo/shared_target # Ensure that Cargo binaries are in the PATH set PATH $HOME/.cargo/bin/ $PATH # Helpful expansions abbr -a -g gp git push abbr -a -g gc git commit -asm abbr -a -g gst git status # Helpful aliases command -q exa; and alias la="exa -abghl --git --color=automatic" command -q exa; and alias ll="exa -bghl --git --color=automatic" # Fisher! if not functions -q fisher set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config curl https://git.io/fisher --create-dirs -sLo $XDG_CONFIG_HOME/fish/functions/fisher.fish fish -c fisher end ## Node # Volta config set -gx VOLTA_HOME "$HOME/.volta" set -gx PATH "$VOLTA_HOME/bin" $PATH

  • antigen

    The plugin manager for zsh.

  • At some point, perhaps ~10 years ago, I was introduced to ZSH with the venerable Oh My ZSH framework. For me, this was a huge awakening because it taught me about how much shell improvements can impact your life. I gradually evolved my ZSH setup to use package managers like antigen and began to invest more in creature comforts.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • volta

    Volta: JS Toolchains as Code. ⚡

  • Since I'm a big fan of toolchains as code, I've fallen in love with volta for managing my Node.js and Yarn versions. Don't forget commands like volta pin in Node.js projects to lock in versions to your package.json file!

  • zoxide

    A smarter cd command. Supports all major shells.

  • I use zoxide to quickly switch to recently used directories, or to paths which I use particularly commonly. It can be hard to remember to use z instead of cd but once you get the hang of it you'll never go back.

  • exa

    A modern replacement for ‘ls’.

  • Even though ls is a good-old standby, I prefer the aliases for ll and la that rely on exa. These aliases default to showing important information like git status and can even prevent me from needing to launch subsequent, exploratory commands.

  • rbenv

    Manage your app's Ruby environment

  • My setup relies heavily on rbenv since I use Ruby for automation all over the place.

  • starship

    ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!

  • The Starship prompt is a terrific alternative to slower prompts written in pure shell. It supports a whole variety of status features, is quite performant, and has easy-to-understand configuration options.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • skim

    Fuzzy Finder in rust!

  • Tools like skim work great with others like fd to provide additional functionality when it comes to locating files and filtering through search results. I also use skim's sk command pretty heavily in other scripts when interactivity is required.

  • ohmyzsh

    🙃 A delightful community-driven (with 2,300+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.

  • At some point, perhaps ~10 years ago, I was introduced to ZSH with the venerable Oh My ZSH framework. For me, this was a huge awakening because it taught me about how much shell improvements can impact your life. I gradually evolved my ZSH setup to use package managers like antigen and began to invest more in creature comforts.

  • fd

    A simple, fast and user-friendly alternative to 'find'

  • Tools like skim work great with others like fd to provide additional functionality when it comes to locating files and filtering through search results. I also use skim's sk command pretty heavily in other scripts when interactivity is required.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts