From 07af0bc14eac67368d05118398be5c03f2d8caaa Mon Sep 17 00:00:00 2001 From: marcelsafin <179933638+marcelsafin@users.noreply.github.com> Date: Sun, 29 Mar 2026 04:31:57 +0200 Subject: [PATCH] install: add fish shell support for PATH configuration Fish shell users currently fall into the catch-all case, which writes POSIX export syntax to ~/.profile. Fish does not source ~/.profile and does not use export PATH="...:$PATH" syntax, so the PATH addition silently does nothing. Add a fish case that targets the idiomatic conf.d directory and uses fish_add_path, matching how the script already handles zsh and bash with their respective profile files and syntax. Extract the PATH command into a variable to avoid duplicating the shell-specific logic across the interactive prompt, non-interactive hint, and get-started instructions. --- install.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 76bc23c2..7904901c 100755 --- a/install.sh +++ b/install.sh @@ -152,7 +152,8 @@ if ! command -v copilot >/dev/null 2>&1; then echo "Notice: $INSTALL_DIR is not in your PATH" # Detect shell profile file for PATH - case "$(basename "${SHELL:-/bin/sh}")" in + CURRENT_SHELL="$(basename "${SHELL:-/bin/sh}")" + case "$CURRENT_SHELL" in zsh) RC_FILE="${ZDOTDIR:-$HOME}/.zprofile" ;; bash) if [ -f "$HOME/.bash_profile" ]; then @@ -163,29 +164,36 @@ if ! command -v copilot >/dev/null 2>&1; then RC_FILE="$HOME/.profile" fi ;; + fish) RC_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/fish/conf.d/copilot.fish" ;; *) RC_FILE="$HOME/.profile" ;; esac + PATH_LINE="export PATH=\"$INSTALL_DIR:\$PATH\"" + if [ "$CURRENT_SHELL" = "fish" ]; then + PATH_LINE="fish_add_path \"$INSTALL_DIR\"" + fi + # Prompt user to add to shell rc file (only if interactive) if [ -t 0 ] || [ -e /dev/tty ]; then echo "" printf "Would you like to add it to %s? [y/N] " "$RC_FILE" if read -r REPLY /dev/null; then if [ "$REPLY" = "y" ] || [ "$REPLY" = "Y" ]; then - echo "export PATH=\"$INSTALL_DIR:\$PATH\"" >> "$RC_FILE" - echo "✓ Added PATH export to $RC_FILE" + mkdir -p "$(dirname "$RC_FILE")" + echo "$PATH_LINE" >> "$RC_FILE" + echo "✓ Added PATH configuration to $RC_FILE" echo " Restart your shell or run: source $RC_FILE" fi fi else echo "" echo "To add $INSTALL_DIR to your PATH permanently, add this to $RC_FILE:" - echo " export PATH=\"$INSTALL_DIR:\$PATH\"" + echo " $PATH_LINE" fi echo "" echo "Installation complete! To get started, run:" - echo " export PATH=\"$INSTALL_DIR:\$PATH\" && copilot help" + echo " $PATH_LINE && copilot help" else echo "" echo "Installation complete! Run 'copilot help' to get started."