podpowłoka nie jest tworzona, jeśli uruchamiasz polecenia bez ścieżki?
Czytam książkę "
Linux Command Line and the Shell Scripting Bible
"Trzecie wydanie. Na stronie 279 cytuję:
„Zastępowanie poleceń tworzy tak zwane
subshellaby uruchomić podane polecenie. Podpowłoka to oddzielna powłoka potomna utworzona z powłoki, w której wykonywany jest skrypt. Z tego powodu żadne zmienne utworzone w skrypcie nie są dostępne dla polecenia podpowłoki.
Podpowłoki są również tworzone, jeśli uruchomisz polecenie z wiersza poleceń za pomocą
./ścieżka, ale nie zostaną utworzone, jeśli po prostu uruchomisz polecenie bez ścieżki. "
Ostatnie zdanie mnie dezorientuje. Przetestowałem prosty skrypt, który eksportuje niektóre zmienne; zmienne nie będą istniały po istnieniu skryptu, jednak skrypt jest wywoływany z
./path lub umieść skrypt
/usr/bini biegnij bez ścieżki. Wydaje mi się, że nie ma znaczenia, jak jest nazywany w stosunku do podpowłoki.
Co mnie ominęło?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Mowa o takich konstrukcjach jak:
W tym przykładzie wywołuję dwie podpowłoki przy użyciu dwóch różnych obsługiwanych notacji podpowłoki. Uruchamia się pierwsza podpowłoka
polecenie, a druga podpowłoka zostanie uruchomiona
zespół. W
Polecenie jest wykonywane przez oryginalną powłokę po zakończeniu działania obu podpowłok.
Z tego powodu żadne zmienne utworzone w skrypcie nie są dostępne dla polecenia podpowłoki.
Tutaj autor cofnął się. Zmienne utworzone przed wywołaniem podpowłoki są dostępne dla podpowłoki. Zmienne utworzone wewnątrz podpowłoki są dostępne tylko dla podpowłoki i znikną po jej zakończeniu.
Podpowłoki są również tworzone, jeśli uruchomisz polecenie z wiersza poleceń przy użyciu ścieżki ./, ale nie zostaną utworzone, jeśli po prostu uruchomisz polecenie bez ścieżki. "
Nie jest jasne, co autor próbuje tutaj powiedzieć. W przypadku wywołania polecenia zewnętrznego, niezależnie od tego, czy jest ono wywoływane ze ścieżką, czy bez, nastąpi co następuje:
Jest to nowy proces, więc wszelkie zmienne ustawione przez polecenie zewnętrzne będą niedostępne dla procesu nadrzędnego, tak jakby to była podpowłoka.
Autor mógł mieć na myśli jeden z trzech następujących scenariuszy: