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:
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
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