Ci sono due modi per eseguire uno script di shell in Linux. Puoi usare:
bash script.sh
Oppure puoi eseguire lo script della shell in questo modo:
./script.sh
Forse è semplice, ma non spiega molto. Non preoccuparti, farò le necessarie spiegazioni con esempi in modo da capire perché una particolare sintassi viene utilizzata nel formato specificato durante l’esecuzione di uno script di shell.
Userò questo script di shell di una riga per rendere le cose il più semplici possibile:
:~/Scripts$ cat hello.sh echo "Hello World!"
Metodo 1: Esecuzione di uno script di shell passando il file come argomento alla shell
Il primo metodo consiste nel passare il nome del file di script come argomento alla shell.
Considerando che bash è la shell predefinita, puoi eseguire uno script come questo:
bash hello.sh
Conoscete il vantaggio di questo approccio? Il tuo script non ha bisogno di avere l’autorizzazione di esecuzione. Abbastanza utile per compiti rapidi e semplici.
Se non si ha familiarità già, vi consiglio di leggere la mia guida dettagliata sul permesso di file in Linux.
Tieni presente che deve essere uno script di shell che passi come argomento. Uno script di shell è composto da comandi. Se si utilizza un file di testo normale, si lamenterà di comandi errati.
In questo approccio, è stato specificato esplicitamente che si desidera utilizzare bash come interprete per lo script.
Shell è solo un programma e bash è un’implementazione di questo. Ci sono altri programmi di shell come ksh, zsh,ecc. Se hai altre shell installate, puoi usare anche quello invece di bash.
Ad esempio, ho installato zsh e l’ho usato per eseguire lo stesso script:
Di Lettura Consigliato:
Metodo 2: Eseguire script di shell, specificando il suo percorso
L’altro metodo per eseguire uno script di shell, offrendo il suo percorso. Ma perché ciò sia possibile, il tuo file deve essere eseguibile. In caso contrario, si avrà “permesso negato” errore quando si tenta di eseguire lo script.
Quindi prima devi assicurarti che il tuo script abbia il permesso di esecuzione. Puoi usare il comando chmod per darti questo permesso in questo modo:
chmod u+x script.sh
Una volta che lo script è eseguibile, tutto quello che dovete fare è digitare il nome del file con il suo percorso assoluto o relativo. Più spesso si trovano nella stessa cartella, quindi basta usarlo come questo:
./script.sh
Se non si è nella stessa directory dello script, è possibile specificare il percorso assoluto o relativo allo script:
Che ./ prima che lo script sia importante (quando si è nella stessa directory dello script)
Perché non puoi usare il nome dello script quando ti trovi nella stessa directory? Questo perché i tuoi sistemi Linux cercano gli eseguibili da eseguire in alcune directory selezionate specificate nella variabile PATH.
Ecco il valore della variabile PATH per il mio sistema:
:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Ciò significa che qualsiasi file con autorizzazioni di esecuzione in una delle seguenti directory può essere eseguito da qualsiasi punto del sistema:
- /home / abhishek/.local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
I binari o i file eseguibili per Linux comandi come ls, gatto, ecc si trovano in una di queste directory. Questo è il motivo per cui si è in grado di eseguire questi comandi da qualsiasi punto del sistema semplicemente utilizzando i loro nomi. Vedi, il comando ls si trova nella directory / usr / bin.
Quando si specifica lo script SENZA il percorso assoluto o relativo, non è possibile trovarlo nelle directory menzionate nella variabile PATH.
Perché la maggior parte degli script di shell contiene #! / bin / bash all’inizio degli script della shell?
Ricorda come ho detto che shell è solo un programma e ci sono diverse implementazioni di shell.
Quando si utilizza il #! / bin / bash, stai specificando che lo script deve essere eseguito con bash come interprete. Se non lo fai ed esegui uno script ./script.sh modo, di solito viene eseguito con qualsiasi shell si sta eseguendo.
Ha importanza? Potrebbe. Vedi, la maggior parte della sintassi della shell è comune in tutti i tipi di shell, ma alcuni potrebbero differire.
Ad esempio, il comportamento dell’array è diverso nelle shell bash e zsh. In zsh, l’indice dell’array inizia da 1 invece di 0.
Utilizzando #! / bin / bash indica che lo script è bash shell script e dovrebbe essere eseguito con bash come interprete indipendentemente dalla shell che viene utilizzata sul sistema. Se si utilizza la sintassi specifica zsh, è possibile indicare che si tratta di script zsh aggiungendo #! / bin / zsh come prima riga dello script.
Lo spazio tra #! / bin / bash non importa. Puoi anche usare #!/ bin / bash.
È stato utile?
Spero che questo articolo sia stato aggiunto alla tua conoscenza di Linux. Se avete ancora domande o suggerimenti, si prega di lasciare un commento.
Gli utenti esperti possono ancora nitpick questo articolo su cose che ho perso. Ma il problema con tali argomenti per principianti è che non è facile trovare il giusto equilibrio di informazioni ed evitare di avere troppi o troppo pochi dettagli.
Se sei interessato ad imparare lo script Bash, abbiamo un’intera serie per principianti Bash sul nostro sito web Linux Handbook incentrato sugli amministratori di sistema. Se lo desideri, puoi anche acquistare l’ebook con esercizi aggiuntivi per supportare Linux Handbook.
Ti piace quello che leggi? Si prega di condividere con gli altri.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0