PDA

Visualizza Versione Completa : Creare script sh da richiamare.



baglio
14-10-12, 20:31
Salve a tutti, spero di postare nella sezione corretta.
Volevo semplicemente creare uno script per avviare la connessione ssh come root al mio NAS in modo da non dover ogni volta digitare tutta la solfa.

Per ora, ho creato un file sh con lo script per avviare la connessione, gli ho dato la proprietà eseguibile e funziona!
L'unico problema è che ogni volta devo digitare il percorso di dove si trova lo scirpt e anche sh per eseguirlo, è una banalità ok, però volevo sapere se vi è un modo più corretto di realizzare questa cosa.

Poi mi piacerebbe sapere se mettere lo script direttamente nella cartella /usr/bin per farlo partire senza richiamarne il percorso possa essere la soluzione corretta.

Grazie per l'attenzione concessami e per l'eventuale aiuto.

baglio
16-10-12, 16:39
Qualche idea ragazzi?

rusca86
16-10-12, 21:53
Parto dal fondo: il mio consiglio è di non andare ad "intaccare" path come /usr/bin, /bin/, /sbin/,...
Magari potresti pensare di creare una tua "bin" (es: nella home), dove metti solo eventuali tuoi script. Questa soluzione permetterebbe anche un più semplice backup/restore, ad esempio.

Per quanto riguarda il non dover scrivere ogni volta il percorso del tuo eseguibile, la soluzione è "semplice": devi aggiungere tale percorso alla variabile di sistema PATH, ad esempio, salvandoti la nuova PATH nel bash_profile associato al tuo user (ancora una volta, potresti andare a modificare la variabile nei file di root, ma se non ne hai la necessità che anche altri utenti utilizzino i tuoi script è inutile).

Dal punto di vista prettamente pratico, se volessi seguire i miei suggerimenti, dovresti:
1. creare la directory in cui inserirai gli eseguibili. Qui il codice per creare la cartella "bin" nella home del tuo utente:

mkdir ~/bin

2. inserire questo nuovo path nel tuo bash profile. Avendo creato uno shell script, immagino tu abbia anche un minimo di dimestichezza nell'editare file da terminale (vi, nano, pico,...: se hai qualche problema, basta dirmelo ;) ). Sostanzialmente devi inserire, all'interno del file ~/.bash_profile la seguente stringa:


PATH="/Users/tuo_nome_utente/bin:$PATH"
export PATH

(ovviamente sostituendo tuo_nome_utente :D )

Se il file .bash_profile nella tua home non esistesse (e di default penso che non ci sia in Mac OSX), crealo tranquillamente (se invece esiste, aggiungi le due righe alla fine del file).
Poi metti nella tua nuova ~/bin/ lo script che hai fatto. Chiudi e riavvia il terminale (serve per far leggere il file .bash_profile aggiornato alla shell) e digitando il nome dello script dovrebbe trovartelo.

baglio
17-10-12, 00:10
Grazie mille rusca86!
Lo script funziona perfettamente adesso!!! :smt023

Ho creato la cartella ~/.bin dove ho inserito lo script e l'ho reso eseguibile!
Dopodiché ho creato il file .bash_profile!

Per completezza d'informazione vorrei chiederti una domanda se hai tempo di rispondermi.
Potresti spiegarmi il processo di esportazione del PATH...? Come funziona? Cosa dice a cosa di fare che?

Spero di essere stato chiaro, GRAZIE ANCORA!!!

rusca86
17-10-12, 21:13
PATH è una variabile d'ambiente unix in cui si mantengono i percorsi (path in terminologia unix, appunto) di tutti quegli eseguibili che si vogliono raggiungere senza doverne scrivere il percorso completo (esattamente il tuo obiettivo).
Giusto per farti un esempio concreto: quando tu digiti un "comando unix" (es: ls, vi,...), questi comandi in realtà non sono altro che eseguibili inseriti in uno di quei percorsi mantenuti in PATH... proprio per questo motivo tu puoi digitare semplicemente "ls" anzichè il percorso completo dell'eseguibile ("/bin/ls").

Con le istruzioni:
1. PATH="/Users/tuo_nome_utente/bin:$PATH"
2. export PATH

1. ridefinisci la variabile PATH (in sostanza, come faresti con una qualsiasi variabile nel tuo script). Il ":" è il carattere che delimita un percorso dal successivo e scrivendo $PATH, stai definendo PATH come sè stessa (in modo da non perdere i percorsi già salvati) + altri percorsi
2. la esporti nell'ambiente (shell).

Spero si capisca (ho ripetuto un sacco di volte "percorso" e "path" :D )