Więc napisałem swój pierwszy skrypt bash:
#!/bin/bash
echo 'hello world!'
exit
Wiem, że ma odpowiednią lokalizację do bashowania i jest wykonywalna:
$ which bash
/bin/bash
$ chmod +x myscript.sh
Teraz chcę uruchomić go z wiersza polecenia, ale pojawia się błąd:
$ myscript.sh
myscript.sh: command not found
Zamiast tego próbuję tego i to działa:
$ bash myscript.sh
hello world!
Czy tak zawsze będę musiał to wykonać? Wydaje mi się, że wykonałem inne skrypty bez konieczności ich poprzedzania bash
. Jak mogę uruchomić myscript.sh bez konieczności poprzedzania go bash
?
Aktualizacja: Oto dobre wyjaśnienie, dlaczego i jak wykonać skrypt bash .
źródło
Oprócz porady Fernándeza poprzedzamy ją następującym punktem:
Ze względów bezpieczeństwa bieżący katalog nigdy nie jest zawarty w ścieżce wykonania.
źródło
Istnieją 3 sposoby wykonania skryptu bash. Na przykład myscript.sh jako skrypt, który chcesz wykonać.
Metoda 1
wykonaj skrypt jako podproces, który spowoduje problemy z uprawnieniami, jeśli nie właścicielem zapisu. Możesz zmienić uprawnienia przez chmod.
Metoda 2
uruchom skrypt jako bieżący użytkownik. jeśli skrypt bash jest dobrze napisany, nie powinien zawierać błędów.
Metoda 3
podobny do metody 2, ale skrót. zauważ, że jest to oparte na założeniu, że używasz powłoki bash w bieżącej sesji.
mam nadzieję że to pomoże!:)
źródło