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 script
lub możesz uruchomić plik z „shebang” #!/bin/bash
i ustawić go jako wykonywalny ( chmod +x script
). Następnie możesz traktować skrypt jak plik binarny i wykonać go na przykład jako ./script
lub 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 bash
i 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 a
nie 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_file
nie zmodyfikuje ENV, chyba że export
zostanie użyty jawnie.
export
tym 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. :)