Come eseguire uno script bash?


19

Quindi ho scritto il mio primo script bash:

#!/bin/bash
echo 'hello world!'
exit

So che ha il posto giusto per colpire ed è eseguibile:

$ which bash
/bin/bash
$ chmod +x myscript.sh

Ora voglio eseguirlo dalla riga di comando, ma ottengo un errore:

$ myscript.sh
myscript.sh: command not found

Quindi invece provo questo e funziona:

$ bash myscript.sh
hello world!

È così che dovrò sempre eseguirlo? Mi sembra di aver eseguito altri script senza doverlo precedere bash. Come posso eseguire myscript.sh senza doverlo precedere bash?

Aggiornamento: ecco una buona spiegazione del perché e come eseguire uno script bash .

Risposte:


28

Devi rendere eseguibile il file. Puoi farlo con

chmod +x <filename>

dov'è il nome del tuo script e poi devi anteporre a esso per indicare ./alla shell di eseguire un file nella directory locale, come:

./script.sh

Puoi eseguire solo file che si trovano nel tuo PATHo che specifichi un loro percorso. ./, la directory locale, non è presente PATHper impostazione predefinita perché qualcuno potrebbe utilizzarla per scopi nefasti. Immagina uno script chiamato lsrilasciato in una directory, vai all'interno di quella directory, esegui lse quello script fa qualcosa di brutto.

Mentre ci sei, potresti voler renderlo più portatile eseguendo shell invece di bash usando:

#!/bin/sh

o eseguendo bash, indipendentemente da dove sia installato, purché sia ​​installato:

#!/usr/bin/env bash

L'ho già fatto con chmod + x myscript.sh. Ho sbagliato?
Andrew,

1
Probabilmente ti stai perdendo. / L'ho aggiunto alla risposta.
pupeno

1

Oltre al consiglio di Fernández, precedilo con un punto, come questo:

./myscript.sh

Per motivi di sicurezza la directory corrente non è mai inclusa nel percorso di esecuzione.


1

Esistono 3 modi per eseguire lo script bash. Con esempio myscript.sh come script che si desidera eseguire.

Metodo 1

eseguire lo script come un processo secondario, che attiverà problemi di autorizzazione se non il proprietario della scrittura. È possibile modificare le autorizzazioni tramite chmod.

$ chmod + x myscript.sh

$ ./myscript.sh

Metodo 2

eseguire lo script come utente corrente. se lo script bash è ben scritto, non dovrebbe contenere errori.

$ bash myscript.sh

Metodo 3

simile al metodo 2 ma una scorciatoia. si noti che questo si basa sul presupposto che si sta utilizzando la shell bash nella sessione corrente.

$. myscript.sh

spero che sia di aiuto!:)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.