Script da Terminale e Wrapper Dosbox-x

9 views
Skip to first unread message

Emanuele gmail

unread,
May 1, 2026, 4:37:39 PM (3 days ago) May 1
to 'Stefano Donadio' via Spider-Mac Apple User Group

Ciao e buon primo maggio a tutti, vi scrivo per chiedervi un aiuto (premetto che un discorso un po' cervellotico…) ma prima qualche domanda su gli script da terminale:

 

  • Uno script da terminale può essere compilato per diventare un eseguibile? Se si, con che comando?
  • Si può compilare uno script da terminale su computer mac silicon e ottenere un eseguibile universale? O bisogna compilarne uno nativo intel su su mac intel e compilare uno nativo silicon su mac silicon e avviare l’uno o l’altro a seconda del computer su cui viene eseguito?
  • Se fosse così, si può inserire nel testo dello script, poi compilato, l’avvio di un determinato script (compilato intel o silicon) a seconda del tipo di processore del sistema rilevato nello script iniziale?

 

Queste domande per uno scopo di archeologia informatica e retrogaming:

 

Ho trovato su internet uno wrapper (un guscio software in origine compilato per Intel) che richiama un eseguibile intel dosbox che permette (inserendo in una determinata cartella l’eseguibile dos) di avviare vecchi programmi dos, il tutto gestendolo come un singolo programma mac.

 

Sul programma originale ho fatto alcune modifiche

 

  1. Ho recuperato l’ultima versione Intel e la versione Silicon del fork di dosbox “DosBox-x”, che è più moderno, più flessibile e gestisce ottimamente anche gli hd virtuali (opportunamente preparati) con Windows 95 e Windows 98
  2. Sono riuscito ad ottenere un eseguibile universale di DosBox-x con le relative cartelle (arm64 e x86_64)
  3. Ho rinominato l’universale DosBox-x come “DosBox” che era il nome dell’eseguibile originale
  4. Ho verificato che partendo da questo eseguibile (interno), tutto funziona perfettamente e al massimo delle prestazioni sia su mac intel che su mac silicon, il problema sono gli script precedenti l’avvio dell’eseguibile DosBox.

 

Questa è la parte della struttura interna che mi interessa:

 

 

 

All’avvio dell’applicazione dal finder, parte lo script compilato intel “Launcher” (di cui ignoro il contenuto) ma che di fatto esegue il programma “DosBox” nella cartella Resources/dosbox con opportuna configurazione.

Nel mio caso “DosBox” (DosBox-x universale rinominato) si avvia leggendo il file di configurazione DOSBox-X.conf nella medesima cartella che specifica la configurazione della macchina dos.

 

Dopo le modifiche fatte fino ad ora questo è il comportamento:

 

SU ARM

 

-> Partendo da Dosbox eseguibile interno funziona come arm ed è veloce e perfetto

-> partendo dal file launcher si esegue dosbox come intel ma funziona

-> partendo da finder -> si esegue dosbox come intel ma funziona

 

 

SU Intel

 

-> Partendo da Dosbox eseguibile interno funziona con intel ed è veloce e perfetto

-> Partendo da launcher si esegue dosbox come intel ed è perfetto

-> Partendo da finder si esegue dosbox come intel ed è perfetto

 

 

Per evitare di aver i programmi in doppia versione intel/silicon (a casa ho entrambi computer), quello che vorrei fare è scrivere un nuovo Launcer (compilato) - se possibile universale altrimenti in due versioni intel/silicon (avviando quella nativa per il processore) - che richiami semplicemente il programma “DosBox” nella cartella Resources/dosbox che dovrebbe avviarsi a sua volta in forma nativa.

 

Spero sia chiaro il discorso…

 

Ho provato a pasticciare con il terminale ma non ho neanche capito come fare puntare alla cartella interna Resources/dosbox per fare avviare DosBox perché il terminale di default punta alla home dell’utente e io ho bisogno che i percorsi siano tutti relativi (a partire dalla posizione dello script “Launcer”) e non assoluti in modo che funzioni su qualunque computer.

 

Intanto che scrivevo la mail ho fatto qualche prova con l’Ai e Gemini mi ha suggerito

 

“#!/bin/zsh

 

# In zsh, $0:A ottiene il percorso assoluto dello script in modo nativo

# :h prende la "head" (la cartella contenente lo script)

script_dir=${0:A:h}

 

# Definisce il percorso relativo

target="$script_dir/../Resources/dosbox/DosBox"

 

# Controlla se il file esiste e lo esegue

if [[ -f "$target" ]]; then

    # Se è un eseguibile binario, lo lanciamo direttamente

    "$target"

   

    # NOTA: Se DosBox fosse un'app macOS (.app), usa invece:

    # open "$target"

else

    echo "Errore: DosBox non trovato in: $target"

    exit 1

fi”

 

che funziona.

 

Ora dovrei fare in modo che lo script prima di avviare DosBox verifichi il tipo di processore (Intel o Silicon) e passi l’eventuale parametro a DosBox (per avviarlo in modo nativo) o essendo Universal DosBox
parte e si adatta ?

Infine dovrei imparare a rendere lo script .zsh un file Unix esegubile…

 

Vi ho stressato abbastanza…

 

Grazie di cuore.

 

Emanuele

 

 

 

 

Reply all
Reply to author
Forward
0 new messages