Visualizza Versione Completa : Rendere eseguibile uno script bash
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
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
Grazie. Quando ho provato ti faccio sapere.
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.
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.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.