feat: add zsh shell detection to install script (#1539)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Installer now detects when the environment is using Zsh and halts with
clear error messages and guidance so users can move Zsh configuration to
interactive-only files.

* **Bug Fixes**
* Prevents running the installer under unsupported shell setups,
improving installation reliability and avoiding misconfigured runs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
Eli Bosley
2025-09-10 11:00:41 -04:00
committed by GitHub
parent b518131406
commit 50ea2a3ffb
@@ -2,6 +2,33 @@
# Unraid API Installation Verification Script
# Checks that critical files are installed correctly
# Function to check for non-bash shells
check_shell() {
# This script runs with #!/bin/bash shebang
# On Unraid, users may configure bash to load other shells through .bashrc
# We check if the current process ($$) is actually bash, not another shell
# Using $$ is correct here - we need to detect if THIS process is running the expected bash
local current_shell
current_shell=$(ps -o comm= -p $$)
# Remove any path and get just the shell name
current_shell=$(basename "$current_shell")
if [[ "$current_shell" != "bash" ]]; then
echo "Unsupported shell detected: $current_shell" >&2
echo "Unraid scripts require bash but your system is configured to use $current_shell for scripts." >&2
echo "This can cause infinite loops or unexpected behavior when Unraid scripts execute." >&2
echo "Please configure $current_shell to only activate for interactive shells." >&2
echo "Add this check to your ~/.bashrc or /etc/profile before starting $current_shell:" >&2
echo " [[ \$- == *i* ]] && exec $current_shell" >&2
echo "This ensures $current_shell only starts for interactive sessions, not scripts." >&2
exit 1
fi
}
# Run shell check first
check_shell
echo "Performing comprehensive installation verification..."
# Define critical files to check (POSIX-compliant, no arrays)