تكامل MacOS Bash Shell

الصدفة الافتراضية قبل macOS Catalina (10.15). منذ Catalina، يأتي macOS مع Zsh باعتباره الصدفة الافتراضية. إذا كنت تستخدم جهاز Mac حديثًا ولم تقم بتغيير الصدفة الخاصة بك، فراجع دليل macOS Zsh Integration بدلاً من ذلك.

يمكنك التحقق من الصدفة الحالية الخاصة بك باستخدام:

صدى $SHELL

لتسهيل التفاعل مع STT (تحويل الكلام إلى نص) CLI، يمكنك إضافة وظيفة اختصار إلى ~/.bash_profile. يتيح لك ذلك كتابة “سؤالك” في الوحدة الطرفية.

                                         ## تعليمات الإعداد
  1. افتح تكوين Bash الخاص بك باستخدام المحرر الذي تفضله:

    nano ~/.bash_profile
    open -e ~/.bash_profile   # opens in TextEdit
    
       2. الصق الكتلة التالية في نهاية الملف:
    
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
}
                     3. أعد تحميل التكوين الخاص بك:
source ~/.bash_profile
                 ## ملاحظات خاصة بنظام التشغيل Mac
  • المهلة ليست مدمجة في نظام التشغيل macOS. قم بتثبيتها عبر Homebrew قبل استخدام هذه الوظيفة:

    brew install coreutils
    

بعد التثبيت، يتوفر timeout باسم gtimeout. قم بإضافة اسم مستعار أو استبدال timeout بـgtimeout في الوظيفة أعلاه:

alias timeout=gtimeout

أضف الاسم المستعار أعلى وظيفة s() في ملف ~/.bash_profile الخاص بك.

  • يستخدم نظام التشغيل macOS ~/.bash_profile لأصداف تسجيل الدخول (يفتح تطبيق Terminal.app أصداف تسجيل الدخول بشكل افتراضي)، بينما يستخدم Linux عادةً ~/.bashrc. إذا كنت تريد أن تكون الوظيفة متاحة في جميع السياقات، فيمكنك الحصول على أحدهما من الآخر:

    # Add to ~/.bash_profile:
    [ -f ~/.bashrc ] && source ~/.bashrc
    
  • يأتي نظام MacOS مزودًا بـ Bash 3.2 (بسبب ترخيص GPLv3). هذه الوظيفة متوافقة تمامًا مع Bash 3.2+. إذا كنت بحاجة إلى Bash 5، قم بتثبيته عبر Homebrew:

    brew install bash
    
  • مسار بايثون: تأكد من إعداد بيئتك الافتراضية على $SL5NET_AURA_PROJECT_ROOT/.venv. إذا كنت تدير لغة Python باستخدام pyenv أو conda، فاضبط PY_EXEC وفقًا لذلك.

                                                                ## سمات
    
  • المسارات الديناميكية: البحث عن جذر المشروع تلقائيًا عبر ملف العلامة /tmp.

  • إعادة التشغيل التلقائي: إذا كانت الواجهة الخلفية معطلة، فإنها تحاول تشغيل “start_service” وخدمات ويكيبيديا المحلية.

  • المهلات الذكية: حاول الاستجابة السريعة لمدة ثانيتين أولاً، ثم ارجع إلى وضع المعالجة العميقة لمدة 70 ثانية.