Odpowiedzi:
Twój terminal uruchamia powłokę (najprawdopodobniej bash), która prosi o twoje polecenia i je uruchamia.
Oprócz tego trybu interaktywnego możesz także używać powłoki do uruchamiania poleceń z pliku. Aby wykonać polecenia z pliku, możesz albo wywołać powłokę bezpośrednio jak bash scriptlub możesz uruchomić plik z „shebang” #!/bin/bashi ustawić go jako wykonywalny ( chmod +x script). Następnie możesz traktować skrypt jak plik binarny i wykonać go na przykład jako ./scriptlub umieścić w miejscu, w którym szuka go powłoka. ( echo $PATH)
Najprawdopodobniej jest to zarówno twoja interaktywna powłoka, jak i powłoka użyta do uruchomienia bash. Z perspektywy „pierwszego dnia nauki linux” bash działa dokładnie tak samo w obu trybach. - Dużo później możesz się natknąć na niewielkie różnice. Jeśli naprawdę chcesz wiedzieć o szczegółach, sugerowałbym przeczytanie man bashi poszukiwanie miejsc wspominających o „interaktywnym”. (Możesz przeszukać stronę podręcznika, naciskając /.)
Należy zauważyć, że skrypt jest uruchamiany jako nowy proces. Oznacza to w szczególności, że zmienne ustawione w skrypcie nie są widoczne w powłoce wywołującej.
$ 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
$
Bez eksportu anie jest nawet widoczny dla wewnętrznego skryptu.
Ogólnie odpowiedź brzmiałaby „nie”, polecenia w powłoce są takie same w skryptach, w składni i semantyce.
Istnieje jednak kilka drobnych niuansów związanych z konfiguracją środowiska (jakie zmienne są używane i jakie są ustawione).
interaktywna powłoka z wyboru dla Linuksa bash, ale skryptowym często używa innych tłumaczy ( sh, który jest poprzednikiem bash, ksh, który jest na równi z bash), więc trzeba wziąć pod uwagę to, co powłoka jest używany (nazwa bieżącej powłoki s tradycyjnie odbywa się w zmiennej SHELL, spróbuj pisać echo $SHELL).
mogą występować różnice w konfiguracji tego samego interpretera dla sesji interaktywnej i wykonywania skryptu.
Nie. Skrypt to lista poleceń, które można wpisać w terminalu.
Możesz wkleić całość skryptu w terminalu, a wynik będzie taki sam, jak uruchomienie go.
Odwrotnie, możesz „zapisać” polecenia terminala w pliku i przekształcić go w skrypt wielokrotnego użytku i udostępnić go rodzinie i znajomym.
source script_file. które będą edytować zmienne ENV w bieżącym kontekście. podczas uruchamiania skryptu, ponieważ ./script_filenie zmodyfikuje ENV, chyba że exportzostanie użyty jawnie.
exporttym skrypt nie może modyfikować żadnych zmiennych powłoki wywołującej. To samo dotyczy rzeczy takich jak PWD, zdefiniowane aliasy, funkcje i tego typu rzeczy. Można je zmienić tylko interaktywnie lub poprzez pobranie pliku. Ale tak, to chyba nic, z kim ktoś się potknie pierwszego dnia. :)