Intégration macOS Bash Shell

Shell par défaut avant macOS Catalina (10.15). Depuis Catalina, macOS est livré avec Zsh comme shell par défaut. Si vous êtes sur un Mac moderne et que vous n’avez pas modifié votre shell, consultez plutôt le guide macOS Zsh Integration.

Vous pouvez vérifier votre shell actuel avec :

écho $SHELL

Pour faciliter l’interaction avec la CLI STT (Speech-to-Text), vous pouvez ajouter une fonction de raccourci à votre ~/.bash_profile. Cela vous permet de taper simplement « votre question » dans le terminal.

Instructions de configuration

  1. Ouvrez votre configuration Bash avec un éditeur que vous aimez :

    nano ~/.bash_profile
    open -e ~/.bash_profile   # opens in TextEdit
    
  2. Collez le bloc suivant à la fin du fichier :

please read newest updates in zsh - verson


# --- STT Project Path Resolution ---
unalias s 2>/dev/null
s() {
    if [ $# -eq 0 ]; then
        echo "question <your question>"
        return 1
    fi
    update_github_ip
    local TEMP_FILE=$(mktemp)
    local SHORT_TIMEOUT_SECONDS=2
    local LONG_TIMEOUT_SECONDS=70
    # Path shortcuts
    local PY_EXEC="$SL5NET_AURA_PROJECT_ROOT/.venv/bin/python3"
    local CLI_SCRIPT="$SL5NET_AURA_PROJECT_ROOT/scripts/py/cli_client.py"
    # --- 1. try
    timeout $SHORT_TIMEOUT_SECONDS \
    "$PY_EXEC" -u "$CLI_SCRIPT" "$*" \
    --lang "de-DE" --unmasked < /dev/null > "$TEMP_FILE" 2>&1
    local EXIT_CODE=$?
    local OUTPUT=$(cat "$TEMP_FILE")
    rm "$TEMP_FILE"
    if echo "$OUTPUT" | grep -q "Verbindungsfehler" || ! pgrep -f "streamlit-chat.py" > /dev/null; then
        echo "Service-Check: Backend oder Frontend fehlt. Starte neu..."
        start_service
        echo '++++++++++++++++++++++++++++++++++++++++++++++++++'
        local KIWIX_SCRIPT="$SL5NET_AURA_PROJECT_ROOT/config/maps/plugins/standard_actions/wikipedia_local/de-DE/kiwix-docker-start-if-not-running.sh"
        if [ -f "$KIWIX_SCRIPT" ]; then
            bash "$KIWIX_SCRIPT"
        fi
        echo '++++++++++++++++++++++++++++++++++++++++++++++++++'
        echo "BITTE ERNEUT EINGEBEN: s $*"
        return 1
    # 2. Timeout (124) OR success (0)
    elif [ $EXIT_CODE -eq 124 ] || [ $EXIT_CODE -eq 0 ]; then
        if [ $EXIT_CODE -eq 0 ]; then
            echo "$OUTPUT"
            return 0
        fi
        echo "answer > $SHORT_TIMEOUT_SECONDS sec. set Timeout= $LONG_TIMEOUT_SECONDS s..."
        local TEMP_FILE_2=$(mktemp)
        timeout $LONG_TIMEOUT_SECONDS \
        "$PY_EXEC" -u "$CLI_SCRIPT" "$*" \
        --lang "de-DE" --unmasked < /dev/null > "$TEMP_FILE_2" 2>&1
        local EXIT_CODE_2=$?
        local OUTPUT_2=$(cat "$TEMP_FILE_2")
        rm "$TEMP_FILE_2"
        echo "$OUTPUT_2"
        if [ $EXIT_CODE_2 -ne 0 ]; then
             echo "WARNUNG: Timeout > $LONG_TIMEOUT_SECONDS Sec. "
        fi
        return 0
    else
        echo "ERROR"
        echo "$OUTPUT"
        return $EXIT_CODE
    fi
}
  1. Rechargez votre configuration :

    source ~/.bash_profile
    

Notes spécifiques à macOS

  • timeout n’est pas intégré à macOS. Installez-le via Homebrew avant d’utiliser cette fonction :

    brew install coreutils
    

Après l’installation, timeout est disponible sous le nom gtimeout. Ajoutez un alias ou remplacez « timeout » par « gtimeout » dans la fonction ci-dessus :

alias timeout=gtimeout

Ajoutez l’alias au-dessus de la fonction s() dans votre ~/.bash_profile.

  • macOS utilise ~/.bash_profile pour les shells de connexion (Terminal.app ouvre les shells de connexion par défaut), alors que Linux utilise généralement ~/.bashrc. Si vous souhaitez que la fonction soit disponible dans tous les contextes, vous pouvez vous procurer l’une à partir de l’autre :

    # Add to ~/.bash_profile:
    [ -f ~/.bashrc ] && source ~/.bashrc
    
  • macOS est livré avec Bash 3.2 (en raison de la licence GPLv3). Cette fonction est entièrement compatible avec Bash 3.2+. Si vous avez besoin de Bash 5, installez-le via Homebrew :

    brew install bash
    
  • Chemin Python : Assurez-vous que votre environnement virtuel est configuré sur $SL5NET_AURA_PROJECT_ROOT/.venv. Si vous gérez Python avec pyenv ou conda, ajustez PY_EXEC en conséquence.

Caractéristiques

  • Chemins dynamiques : recherche automatiquement la racine du projet via le fichier de marqueur /tmp.

  • Auto-Restart : si le backend est en panne, il tente d’exécuter start_service et les services Wikipédia locaux.

  • Smart Timeouts : essaie d’abord une réponse rapide de 2 secondes, puis revient à un mode de traitement approfondi de 70 secondes.