Risposte:
$prompt: /path/to/scripte premi invio. Nota che devi assicurarti che lo script abbia i permessi di esecuzione.
/path/to directory, ad esempio con il cd /path/tocomando, puoi entrare ./scriptper eseguire il tuo script. Non dimenticare, in questo caso il './' prima di 'script'
Ancora un altro modo per eseguirlo (questa volta senza impostare i permessi di esecuzione):
bash /path/to/scriptname
cd nella directory che contiene lo script o inseriscilo in una cartella bin che si trova in $ PATH
quindi digita
./scriptname.sh
se nella stessa directory o
scriptname.sh
se è nella cartella bin.
./scriptname.shfunziona per me ma scriptname.shdà scriptname.sh: command not found. -rwxr-xr-xsono i suoi permessi.
cdovunque perpetra un altro comune malinteso da principiante. A meno che lo script internamente non abbia dipendenze che richiedono che venga eseguito in una directory particolare (come la necessità di leggere un file di dati a cui lo script inspiegabilmente non fornisce un'opzione a cui puntare) non dovresti mai aver bisogno di un cdposto per eseguirlo, e molto spesso non vorrà.
Potresti fare:
sh scriptname.sh
shè un link simbolico a bash, o se lo script non utilizza alcun Bash specifico costrutto. Nel primo caso, usare bashinvece di shè l'unica soluzione portabile corretta; in quest'ultimo caso, non è la risposta corretta a questa particolare domanda, perché l'OP ha chiesto specificamente consigli per uno script Bash. Eseguire la risposta sbagliata è irresponsabile; gli utenti che non riescono a cogliere la differenza spesso pubblicano qui e hanno bisogno di essere mostrato perché questa risposta "ha funzionato per me" non ha funzionato per loro.
Per prima cosa devi renderlo eseguibile usando: chmod +x name_of_your_file_script .
Dopo averlo reso eseguibile, puoi eseguirlo usando ./same_name_of_your_file_script
Modificare la directory in cui si trova lo script utilizzando il comando cd
Quindi digita
bash program-name.sh
cdnessuna parte; è possibile specificare un percorso arbitrariamente complesso come argomento per bash; in effetti, qualsiasi programma che accetta l'argomento di un nome di file funziona in questo modo (o è terribilmente, incredibilmente rotto).
Questo è un vecchio thread, ma mi sono imbattuto e sono sorpreso che nessuno abbia ancora fornito una risposta completa. Quindi ecco qua ...
D: Come lo eseguo in Terminal?
Confusioni e conflitti:
sudofare nulla di tutto ciò. Questo comando è riservato per l'esecuzione di comandi come un altro utente o un utente "root" (amministratore). Ottimo post qui .(Una persona che sta solo imparando come eseguire gli script non dovrebbe usare questo comando a meno che non ci sia una reale necessità, come installare un nuovo programma. Un buon posto dove mettere i tuoi script è nella tua cartella ~ / bin. Puoi arrivarci da digitando cd ~/bino cd $HOME/bindal prompt del terminale. Avrai i permessi completi in quella cartella.)
Per "eseguire questo script" dal terminale su un sistema di tipo Unix / Linux, devi fare tre cose:
Indica al sistema la posizione dello script. (sceglierne uno)
/path/to/script.sh). Puoi verificare il percorso completo digitando pwdoecho $PWD nel terminale../per il percorso (ad esempio ./script.sh). Facile.PATHe digita semplicemente il nome (ad esempio script.sh). Puoi verificare il sistema PATHdigitando echo $PATHo echo -e ${PATH//:/\\n}se desideri un elenco più ordinato.Indica al sistema che lo script ha il permesso di essere eseguito. (sceglierne uno)
chmod +x /path/to/script.shnel terminale.chmod 755 /path/to/script.shse preferisci i numeri. C'è una grande discussione con un bel grafico qui .Indica al sistema il tipo di script. (sceglierne uno)
BASH /path/to/script.sho PHP /path/to/script.php) Se lo script ha un'estensione, come .php o .py, fa parte del nome dello script e devi includerla.#!/bin/bash) nel tuo esempio. Se lo hai come prima riga del tuo script, il sistema utilizzerà quel programma per eseguire lo script. Non è necessario digitare programmi o utilizzare estensioni.PATHutilizzando #!/usr/bin/envseguito dal nome del programma (ad esempio #!/usr/bin/env basho #!/usr/bin/env python3). Ci sono pro e contro come ampiamente discusso qui .script.she script.phpsono i nomi di file letterali di questi script, e che se inserisci un'estensione nel nome del file, devi includerla quando esegui lo script (e viceversa; se lo script non lo fa ' t avere un'estensione, non metterne una). Questo è diverso, ad esempio, da DOS, dove si poteva omettere .bato .exedal nome del file, e i file dovevano avere un'estensione da un piccolo insieme per essere considerati eseguibili.
Se ti trovi in una directory o in una cartella in cui è disponibile il file di script, modifica semplicemente l'autorizzazione del file in modalità eseguibile facendo
chmod +x your_filename.sh
Dopodiché eseguirai lo script utilizzando il seguente comando.
$ sudo ./your_filename.sh
Sopra il "." rappresentano la directory corrente. Nota! Se non ci si trova nella directory in cui è presente il file script bash, modificare la directory in cui si trova il file utilizzando
cd Directory_name/write the complete path
comando. Altrimenti il tuo script non può essere eseguito.
sudoè sbagliato e potenzialmente orribilmente sbagliato se lo usi su uno script non attendibile che abusa dei poteri che gli hai dato inutilmente.
cdqualche parte è difficile da capire, ma probabilmente anche sbagliato.
chmod +x scriptnamee poi./scriptname.