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 scripto puoi avviare il tuo file con un "shebang" #!/bin/bashe renderlo eseguibile ( chmod +x script). Quindi puoi trattare lo script come un binario ed eseguirlo per esempio come ./scripto 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 bashe 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 anon è 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 ( shche è un predecessore di bash, kshche è 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_filenon modificherà ENV, a meno che non exportvenga utilizzato in modo esplicito.
exportesso 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. :)