PDA

Visualizza Versione Completa : Rendere eseguibile uno script bash



Rici
16-12-09, 11:24
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?

flashcream
16-12-09, 13:11
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
16-12-09, 13:21
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.

flashcream
16-12-09, 13:50
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/backup-applescript.html

Rici
16-12-09, 13:55
Grazie. Quando ho provato ti faccio sapere.

Rici
16-12-09, 15:32
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.

flashcream
16-12-09, 15:42
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
16-12-09, 15:51
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.