Rendere eseguibile uno script bash

Non esistono domande banali o sciocche: chiedi qui… il forum serve proprio a questo!
Post Reply
Rici
Approdato su Mac Peer
Posts: 9
Joined: Thu Sep 10, 2009 12:46 am
Rendere eseguibile uno script bash

Post 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?
User avatar
flashcream
Posts: 38388
Joined: Fri Apr 22, 2005 8:41 pm

Post 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
Rici
Approdato su Mac Peer
Posts: 9
Joined: Thu Sep 10, 2009 12:46 am

Post 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.
User avatar
flashcream
Posts: 38388
Joined: Fri Apr 22, 2005 8:41 pm

Post 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
User avatar
flashcream
Posts: 38388
Joined: Fri Apr 22, 2005 8:41 pm

Post 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
Rici
Approdato su Mac Peer
Posts: 9
Joined: Thu Sep 10, 2009 12:46 am

Post by Rici »

Grazie. Quando ho provato ti faccio sapere.
Rici
Approdato su Mac Peer
Posts: 9
Joined: Thu Sep 10, 2009 12:46 am

Post 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.
User avatar
flashcream
Posts: 38388
Joined: Fri Apr 22, 2005 8:41 pm

Post 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.
rusca86
Approdato su Mac Peer
Posts: 33
Joined: Sat Jan 26, 2008 7:45 am

Post 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.

Post Reply