From 7417e6f8d0bef1ca8598bac64cd5619b9a8c54ba Mon Sep 17 00:00:00 2001 From: 0xallam Date: Sun, 18 Jan 2026 19:08:02 -0800 Subject: [PATCH] fix: improve install script PATH handling for more shells - Add ZDOTDIR support for zsh users who relocate their config - Add XDG_CONFIG_HOME paths for zsh and bash - Add ash and sh shell support (Alpine/BusyBox) - Warn user instead of silently creating .bashrc when no config found - Add user feedback on what file was modified - Handle non-writable config files gracefully --- scripts/install.sh | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index 55ab10f..07ec154 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -209,11 +209,16 @@ check_docker() { add_to_path() { local config_file=$1 local command=$2 + if grep -Fxq "$command" "$config_file" 2>/dev/null; then - return 0 + print_message info "${MUTED}PATH already configured in ${NC}$config_file" elif [[ -w $config_file ]]; then echo -e "\n# strix" >> "$config_file" echo "$command" >> "$config_file" + print_message info "${MUTED}Successfully added ${NC}strix ${MUTED}to \$PATH in ${NC}$config_file" + else + print_message warning "Manually add the directory to $config_file (or similar):" + print_message info " $command" fi } @@ -226,13 +231,19 @@ setup_path() { config_files="$HOME/.config/fish/config.fish" ;; zsh) - config_files="$HOME/.zshrc $HOME/.zshenv" + config_files="${ZDOTDIR:-$HOME}/.zshrc ${ZDOTDIR:-$HOME}/.zshenv $XDG_CONFIG_HOME/zsh/.zshrc $XDG_CONFIG_HOME/zsh/.zshenv" ;; bash) - config_files="$HOME/.bashrc $HOME/.bash_profile $HOME/.profile" + config_files="$HOME/.bashrc $HOME/.bash_profile $HOME/.profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" + ;; + ash) + config_files="$HOME/.ashrc $HOME/.profile /etc/profile" + ;; + sh) + config_files="$HOME/.ashrc $HOME/.profile /etc/profile" ;; *) - config_files="$HOME/.bashrc $HOME/.profile" + config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; esac @@ -245,23 +256,36 @@ setup_path() { done if [[ -z $config_file ]]; then - config_file="$HOME/.bashrc" - touch "$config_file" - fi - - if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then + print_message warning "No config file found for $current_shell. You may need to manually add to PATH:" + print_message info " export PATH=$INSTALL_DIR:\$PATH" + elif [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then case $current_shell in fish) add_to_path "$config_file" "fish_add_path $INSTALL_DIR" ;; + zsh) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; + bash) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; + ash) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; + sh) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; *) - add_to_path "$config_file" "export PATH=\"$INSTALL_DIR:\$PATH\"" + export PATH=$INSTALL_DIR:$PATH + print_message warning "Manually add the directory to $config_file (or similar):" + print_message info " export PATH=$INSTALL_DIR:\$PATH" ;; esac fi if [ -n "${GITHUB_ACTIONS-}" ] && [ "${GITHUB_ACTIONS}" == "true" ]; then echo "$INSTALL_DIR" >> "$GITHUB_PATH" + print_message info "Added $INSTALL_DIR to \$GITHUB_PATH" fi }