Page 1 of 1
Rendere eseguibile uno script bash
Posted: Tue Dec 15, 2009 10:24 pm
by Rici
Ciao, vista l'enorme utilità, mi sono lanciato con molto entusiasmo nella programmazione delle shell bash su Leopard. Sono incappato però subito in uno scoglio che non riesco a superare da solo: come si fa a rendere uno script eseguibile con il buon vecchio doppio click del maus?
I miei script li ho compilati con Emacs e li ho salvati con estensione .sh, li ho "autorizzati" da terminale tramite chmod u+rx nomefile ed ho provato quindi a lanciarli da terminale: tutto OK.
Quando vado però a fare doppio click non vengono però eseguiti ma semplicemente aperti con Emacs.
Sapete dirmi dove sbaglio?
Posted: Wed Dec 16, 2009 12:11 am
by flashcream
lo script deve essere eseguibile (chmod +x nome.sh) e forse come prima riga manca #!/bin/bash (cioè che deve utilizzare la shell bash).
in pratica il tuo script non è visto come eseguibile e cmq da chi l'ha creato: questione di metadata e/o di estensione. prova anche solo semplicemnte a rinominarlo .command
Posted: Wed Dec 16, 2009 12:21 am
by Rici
Come prima riga ho usato #!/bin/bash ed infatti se lo lancio da terminale lo script viene eseguito correttamente. La cosa che non mi riesce fare è fare si che lo script vrnda eseguito semplicemente facendo doppio click sulla sua icona.
Ho provato a cambiare estensione in .command e ad aprirlo co il terminale ma mi da il seguente errore:
RR-2:~ riccardoromoli$ /Users/riccardoromoli/Desktop/Superpippo/Sincronizzazione.command ; exit;
building file list ... rsync: link_stat "/Users/riccardoromoli/Pippo" failed: No such file or directory (2)
done
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]
logout
[Processo completato]
Pippo e Pippo2 sono due cartelle che uso per prova. Lo script serve per sincronizzare i files contenuti in Pippo con la cartella Pippo2.
Posted: Wed Dec 16, 2009 12:41 am
by flashcream
prego. crea un'applicazione con automator dei tuoi comandi. sicuro che poi si avvia il terminale con un doppio clik. come farlo è più volte nel forum.
come più semplice apple script info qui:
http://www.tuttologia.com/tutorial/back ... cript.html
Posted: Wed Dec 16, 2009 12:50 am
by flashcream
prego. crea un'applicazione con automator dei tuoi comandi. (esegui uno script shell e copi/incolli #!/bin/bash al posto di cat e a seguire e a capo i tuoi comandi). sicuro che poi si avvia il terminale con un doppio clik. come farlo è cmq più volte nel forum, anche con immagini.
come più semplice apple script info qui:
http://www.tuttologia.com/tutorial/back ... cript.html
Posted: Wed Dec 16, 2009 12:55 am
by Rici
Grazie. Quando ho provato ti faccio sapere.
Posted: Wed Dec 16, 2009 2:32 am
by Rici
Ho provato a rendere eseguibile il file con Autometor ma non mi è riuscito.
Il suggerimento di usare ApopleScript è buono ma avendo la necessità di spostare gli script anche su altre piattaforme (Linux) sono costretto a scriverle come shell bash.
Posted: Wed Dec 16, 2009 2:42 am
by flashcream
Rici wrote:Ho provato a rendere eseguibile il file con Autometor ma non mi è riuscito.
strano perchè riesce (e i topic nel forum sono testimoni). come sai scrivere in un forum che una cosa non riesce non vuol dire niente. ci sarà sempre qualcuno, a torto o a ragione, che ti dirà il contrario. se vuoi degli aiuti concreti si devono sempre leggere tutti i particolari.
solo che, vista l'esigenza di spostare lo script su altre piattaforme di cui si legge ora, la strada automator non andava neppure intrapresa. il problema è quello già detto sopra: questione di risorse e metadati del file che viene aperto dal creatore (emacs) piuttosto dall'applicazione deputata ad eseguire il file. se l'aspetto dell'eseguibilità è stato considerato (ripeto: chmod +x nome.sh), altro personalmente non so aggiungere, ma dai un occhio a RCdefault app. buona ricerca su questo punto.
Posted: Wed Dec 16, 2009 2:51 am
by rusca86
Quando clicchi due volte sul file, ti si apre TextEdit perchè il file è associato a quel programma.
Fai così: click destro sul file > in "Apri con", seleziona il terminale (se non è nell'elenco, clicca "altro").
In ogni caso, portando il file su Linux non avrai problemi.