Risposte:
Il tuo terminale esegue una shell (molto probabilmente bash
), che è quella che richiede i tuoi comandi e li esegue.
Oltre a questa modalità interattiva è anche possibile usare la shell per eseguire comandi da un file. Per eseguire i comandi nel tuo file puoi chiamare la shell direttamente come bash script
o puoi avviare il tuo file con un "shebang" #!/bin/bash
e renderlo eseguibile ( chmod +x script
). Quindi puoi trattare lo script come un binario ed eseguirlo per esempio come ./script
o metterlo in un punto dove la tua shell lo sta cercando. ( echo $PATH
)
Molto probabilmente sia la shell interattiva sia la shell utilizzata per l'esecuzione sono bash
. Dal punto di vista di un bash "first day learning linux" funziona esattamente lo stesso in entrambe le modalità. - Molto più tardi potresti incappare in lievi differenze. Se vuoi davvero conoscere in dettaglio suggerirei di leggere man bash
e cercare luoghi che menzionano "interattivo". (È possibile cercare una pagina man, premendo /
.)
Una cosa importante da notare è che lo script viene eseguito come un nuovo processo. Ciò significa in particolare che le variabili impostate nello script non sono visibili nella shell chiamante.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Senza l'esportazione a
non è nemmeno visibile allo script interno.
In generale, la risposta sarebbe "no", i comandi nella shell sono gli stessi negli script, nella sintassi e nella semantica.
Ma ci sono un sacco di piccole sfumature relative alla configurazione dell'ambiente (quali variabili vengono utilizzate e a cosa sono impostate).
la shell interattiva di scelta per Linux è bash, ma scripting usa spesso altri interpreti ( sh
che è un predecessore di bash
, ksh
che è alla pari con bash), quindi bisogna prendere in considerazione ciò shell utilizzato (il nome della shell corrente s viene tradizionalmente tenuto in una variabile SHELL
, prova a digitare echo $SHELL
).
potrebbero esserci differenze nella configurazione dello stesso interprete per la sessione interattiva e per l'esecuzione dello script.
No. Uno script è un elenco di comandi che è possibile digitare nel terminale.
È possibile incollare la totalità di uno script nel terminale e il risultato sarà lo stesso di eseguirlo.
Inversamente, è possibile "salvare" i comandi del terminale all'interno di un file e trasformarlo in uno script riutilizzabile e condividerlo con la famiglia e gli amici.
source script_file
. che modificherà le variabili ENV nel contesto corrente. durante l'esecuzione dello script in quanto ./script_file
non modificherà ENV, a meno che non export
venga utilizzato in modo esplicito.
export
esso non è possibile per uno script modificare alcuna variabile della shell chiamante. Lo stesso vale per cose come PWD, alias definiti, funzioni e cose del genere. Possono essere modificati solo in modo interattivo o acquistando un file. Ma sì, probabilmente non è niente che qualcuno inciamperà il primo giorno. :)