istnieją dwa sposoby uruchamiania skryptu powłoki w Linuksie. Możesz użyć:
bash script.sh
lub możesz wykonać skrypt powłoki w ten sposób:
./script.sh
to może proste, ale niewiele wyjaśnia. Nie martw się, zrobię niezbędne Wyjaśnienie za pomocą przykładów, abyś zrozumiał, dlaczego dana składnia jest używana w danym formacie podczas uruchamiania skryptu powłoki.
zamierzam użyć tego skryptu powłoki jednowierszowej, aby wszystko było tak nieskomplikowane, jak to tylko możliwe:
:~/Scripts$ cat hello.sh echo "Hello World!"
Metoda 1: uruchomienie skryptu powłoki poprzez przekazanie pliku jako argumentu do powłoki
pierwsza metoda polega na przekazaniu nazwy pliku skryptu jako argumentu do powłoki.
biorąc pod uwagę, że bash jest domyślną powłoką, możesz uruchomić skrypt taki jak ten:
bash hello.sh
czy znasz zalety takiego podejścia? Twój skrypt nie musi mieć uprawnień do wykonywania. Bardzo przydatny do szybkich i prostych zadań.
jeśli nie jesteś już zaznajomiony, radzę przeczytać mój szczegółowy przewodnik na temat uprawnień do plików w Linuksie.
pamiętaj, że musi to być skrypt powłoki, który przekazujesz jako argument. Skrypt powłoki składa się z poleceń. Jeśli używasz zwykłego pliku tekstowego, będzie narzekać na nieprawidłowe polecenia.
w tym podejściu wyraźnie określiłeś, że chcesz używać Basha jako interpretera dla skryptu.
Shell to po prostu program, a bash to jego implementacja. Istnieją inne takie programy powłoki jak ksh, zsh, itp. Jeśli masz zainstalowane inne powłoki, możesz ich użyć zamiast Basha.
na przykład zainstalowałem zsh i użyłem go do uruchomienia tego samego skryptu:
zalecana lektura:
Metoda 2: Wykonaj skrypt powłoki podając jego ścieżkę
inną metodą uruchomienia skryptu powłoki jest podanie jego ścieżki. Ale aby było to możliwe, Twój plik musi być wykonywalny. W przeciwnym razie będziesz mieć błąd „Odmowa uprawnień” podczas próby wykonania skryptu.
więc najpierw musisz się upewnić, że Twój skrypt ma uprawnienia do wykonywania. Możesz użyć polecenia chmod, aby dać sobie to pozwolenie w ten sposób:
chmod u+x script.sh
gdy skrypt jest wykonywalny, wystarczy wpisać nazwę pliku wraz z jego bezwzględną lub względną ścieżką. Najczęściej jesteś w tym samym katalogu, więc po prostu używasz go w ten sposób:
./script.sh
jeśli nie znajdujesz się w tym samym katalogu co skrypt, możesz określić bezwzględną lub względną ścieżkę do skryptu:
to ./ zanim skrypt jest ważny (gdy jesteś w tym samym katalogu co skrypt)
dlaczego nie możesz używać nazwy skryptu, gdy jesteś w tym samym katalogu? Dzieje się tak dlatego, że Twoje systemy Linux szukają plików wykonywalnych do uruchomienia w kilku wybranych katalogach, które są określone w zmiennej PATH.
oto wartość zmiennej PATH dla mojego systemu:
:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
oznacza to, że każdy plik z uprawnieniami do wykonywania w jednym z poniższych katalogów może być uruchamiany z dowolnego miejsca w systemie:
- /Strona główna / abhishek/local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
pliki binarne lub pliki wykonywalne dla poleceń Linuksa, takich jak LS, Cat itp.znajdują się w jednym z tych katalogów. Dlatego możesz uruchamiać te polecenia z dowolnego miejsca w systemie, używając ich nazw. Zobacz, polecenie ls znajduje się w katalogu/usr / bin.
gdy określisz skrypt bez bezwzględnej lub względnej ścieżki, nie będzie mógł znaleźć go w katalogach wymienionych w zmiennej PATH.
dlaczego większość skryptów powłoki zawiera #! / bin / bash na początku skryptów powłoki?
pamiętaj, jak wspomniałem, że powłoka jest tylko programem i istnieją różne implementacje powłok.
kiedy używasz#! /bin / bash, określasz, że skrypt ma być uruchamiany z bash jako interpreter. Jeśli tego nie zrobisz i uruchomisz skrypt .skrypt.shh manner, zwykle jest uruchamiany z każdą powłoką, którą uruchamiasz.
czy to ważne? Może. Większość składni powłoki jest powszechna we wszystkich rodzajach powłoki, ale niektóre mogą się różnić.
na przykład zachowanie tablicy jest INNE w powłokach bash i zsh. W zsh indeks tablicy zaczyna się od 1 zamiast 0.
Używając #! /bin / bash wskazuje, że skrypt jest skryptem powłoki bash i powinien być uruchamiany z bash jako interpreterem niezależnie od powłoki używanej w systemie. Jeśli używasz składni zsh, możesz wskazać, że jest to skrypt zsh, dodając #! / bin / zsh jako pierwsza linia skryptu.
odstęp między#! / bin / bash nie ma znaczenia. Możesz również użyć #!/ bin / bash.
czy to było pomocne?
mam nadzieję, że ten artykuł wzbogaci Twoją wiedzę o Linuksie. Jeśli nadal masz pytania lub sugestie, Zostaw komentarz.
doświadczeni użytkownicy nadal mogą nitpick ten artykuł o rzeczach, które przegapiłem. Ale problem z takimi początkującymi tematami polega na tym, że nie jest łatwo znaleźć właściwą równowagę informacji i uniknąć zbyt dużej lub zbyt małej liczby szczegółów.
jeśli jesteś zainteresowany nauką skryptów bash, mamy całą serię Bash dla początkujących na naszej stronie poświęconej sysadmin Linux Handbook. Jeśli chcesz, możesz również kupić ebook z dodatkowymi ćwiczeniami do obsługi podręcznika Linux.
podoba Ci się to, co czytasz? Podziel się nim z innymi.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0