Odpowiedzi:
$prompt: /path/to/script
i naciśnij Enter. Pamiętaj, że musisz upewnić się, że skrypt ma uprawnienia do wykonywania.
/path/to
katalogu, np. Za pomocą cd /path/to
polecenia, możesz wejść, ./script
aby uruchomić skrypt. Nie zapomnij w tym przypadku o znaku „./” przed „script”
Jeszcze inny sposób wykonania tego (tym razem bez ustawiania uprawnień do wykonywania):
bash /path/to/scriptname
cd do katalogu zawierającego skrypt lub umieść go w folderze bin znajdującym się w $ PATH
następnie wpisz
./scriptname.sh
jeśli w tym samym katalogu lub
scriptname.sh
jeśli znajduje się w folderze bin.
./scriptname.sh
działa dla mnie, ale scriptname.sh
daje scriptname.sh: command not found
. -rwxr-xr-x
to jego uprawnienia.
cd
w ogóle gdziekolwiek indziej, prowadzi do kolejnego nieporozumienia powszechnego wśród początkujących. O ile skrypt wewnętrznie nie ma zależności, które wymagają, aby działał w określonym katalogu (np. Konieczność odczytania pliku danych, na który skrypt w niewytłumaczalny sposób nie udostępnia opcji wskazania), nigdy nie powinieneś potrzebować cd
nigdzie, aby go uruchomić i bardzo często nie chce.
Mógłbyś:
sh scriptname.sh
sh
jest dowiązaniem do bash
, lub jeśli skrypt nie korzysta z żadnej Bash specyficzną konstrukcję. W pierwszym przypadku używanie bash
zamiast sh
jest jedynym poprawnym, przenośnym rozwiązaniem; w tym drugim przypadku nie jest to poprawna odpowiedź na to konkretne pytanie, ponieważ OP zapytał o radę dotyczącą skryptu Bash. Podanie złej odpowiedzi jest nieodpowiedzialne; użytkownicy, którzy nie rozumieją różnicy, często publikują w tym miejscu i trzeba im pokazać, dlaczego ta odpowiedź „zadziałała dla mnie” nie zadziałała w ich przypadku.
Po pierwsze trzeba uczynić go wykonywalnym przy użyciu: chmod +x name_of_your_file_script
.
Po utworzeniu pliku wykonywalnego możesz go uruchomić za pomocą ./same_name_of_your_file_script
Zmień katalog na miejsce, w którym znajduje się skrypt , używając polecenia cd
Następnie wpisz
bash program-name.sh
cd
nigdzie; możesz podać dowolnie złożoną nazwę ścieżki jako argument bash
; faktycznie, każdy program, który przyjmuje argument nazwy pliku, działa w ten sposób (lub jest przerażająco, otępiająco zepsuty).
To stary wątek, ale trafiłem na niego i jestem zaskoczony, że nikt jeszcze nie udzielił pełnej odpowiedzi. Więc oto idzie ...
P: Jak to zrobić w terminalu?
Nieporozumienia i konflikty:
sudo
robić nic z tego. To polecenie jest zarezerwowane do uruchamiania poleceń jako inny użytkownik lub użytkownik „root” (administrator). Świetny post tutaj .(Osoba, która dopiero uczy się, jak wykonywać skrypty, nie powinna używać tego polecenia, chyba że jest to naprawdę potrzebne, na przykład instalacja nowego programu. Dobre miejsce do umieszczenia skryptów jest w folderze ~ / bin. Możesz się tam dostać, wpisując cd ~/bin
lub cd $HOME/bin
z poziomu monitu terminala. Będziesz mieć pełne uprawnienia w tym folderze).
Aby „wykonać ten skrypt” z terminala w systemie typu Unix / Linux, musisz zrobić trzy rzeczy:
Poinformuj system o lokalizacji skryptu. (Wybierz jedno)
/path/to/script.sh
.). Możesz zweryfikować pełną ścieżkę, wpisującpwd
lub echo $PWD
w terminalu../
jako ścieżki (np./script.sh
.). Łatwo.PATH
i wpisz nazwę (np script.sh
.). Możesz zweryfikować system PATH
, wpisując echo $PATH
lub echo -e ${PATH//:/\\n}
jeśli chcesz uporządkowaną listę.Poinformuj system, że skrypt ma uprawnienia do wykonania. (Wybierz jedno)
chmod +x /path/to/script.sh
w terminalu.chmod 755 /path/to/script.sh
jeśli wolisz liczby. Istnieje wielka dyskusja z wykresu chłodnym tutaj .Podaj systemowi typ skryptu. (Wybierz jedno)
BASH /path/to/script.sh
lub PHP /path/to/script.php
) Jeśli skrypt ma rozszerzenie, takie jak .php lub .py, jest częścią nazwy skryptu i należy je dołączyć.#!/bin/bash
) w swoim przykładzie. Jeśli masz to jako pierwszą linię skryptu, system użyje tego programu do wykonania skryptu. Nie ma potrzeby pisania programów ani używania rozszerzeń.PATH
, używając, #!/usr/bin/env
a następnie nazwy programu (np. #!/usr/bin/env bash
Lub #!/usr/bin/env python3
). Istnieją zalety i wady, które szczegółowo omówiono tutaj .script.sh
i script.php
są to dosłowne nazwy plików tych skryptów, i że jeśli umieścisz rozszerzenie w nazwie pliku, musisz je dołączyć podczas uruchamiania skryptu (i odwrotnie; jeśli skrypt nie t mieć rozszerzenie, nie umieszczaj go). Jest to odmienne od np. DOS, w którym można pominąć .bat
lub .exe
z nazwy pliku, a pliki muszą mieć rozszerzenie z małego zestawu, aby mogły być uznane za wykonywalne.
Jeśli jesteś w katalogu lub folderze, w którym plik skryptu jest dostępny, po prostu zmień uprawnienia do pliku w trybie wykonywalnym, wykonując
chmod +x your_filename.sh
Następnie uruchomisz skrypt za pomocą następującego polecenia.
$ sudo ./your_filename.sh
Wyżej "." reprezentują bieżący katalog. Uwaga! Jeśli nie jesteś w katalogu, w którym znajduje się plik skryptu bash, zmień katalog, w którym znajduje się plik, używając
cd Directory_name/write the complete path
Komenda. W przeciwnym razie skrypt nie będzie działał.
sudo
jest źle i potencjalnie strasznie źle, jeśli używasz go na niezaufanym skrypcie, który nadużywa mocy, które niepotrzebnie mu dałeś.
cd
gdzieś znaleźć, jest trudna do zrozumienia, ale prawdopodobnie także błędna.
chmod +x scriptname
a potem./scriptname
.