Witam,
zrobiłem testowy skrypt bash’a z “echo test”. Dodałem permisje do uruchmiania i mogę go odpalić z ./test123.
Chcę aby on się uruchamiał po wpisaniu po prostu komendy test123 w terminalu. Wiem, że można dodać albo $PATH do /etc/profile albo w pliku .bashrc dodać alias test123 = “echo test”, aczkolwiek chciałbym zainstalować to jak pakiet do folderu /usr/bin. W jaki sposób tego dokonać? Istniejące tam pliki są skompilowane, więc wrzucenie czystego pliku “test123” do tego folderu raczej nie jest prawidłową opcją (chociaż działa). Z czego mam skorzystać aby przerobić ten mój skrypt w paczkę tak jak wszystkie inne w folderze /usr/bin ?
dodaj alias
lub
wszelkie swoje skrypty etc. dodawaj do /usr/local/bin/
tylko że nazwa powinna być test123.sh
i wtedy po wpisaniu test123.sh zostanie wykonany
ja tak mam porobione i albo odpalam za pomocą alias
lub nazwa skryptu… i działa
Nie koniecznie, plik może być bez .sh
, wymagana będzie jednak deklaracja #!/bin/bash
może o ile skrypt nie ma podobnej nazwy w systemie
ja korzystam z #!/bin/sh
bo z bash mało co mam swojego
Dokładnie, o ile nie ma podobnej nazwy.
No tak jest sh, bash, zsh etc, ogólnie chodziło o deklarację powłoki
nawet jak siedziałem na bash
na samym początku ( dawno temu ) to wszystkie swoje skrypty miałem z
#!/bin/sh
i tak mi zostało że wszystkie swoje skrypty w nazwie mają .sh
odróżniają się od reszty
@robotox1 -> w /bin
jest mnóstwo różnych plików: binarki, skrypty, linki, …
Jeżeli chodzi o ‘prywatne’ skrypty, to spotkałem się z dwiema wiodącymi szkołami:
- wrzucać do
/bin
(/usr/bin
); - dopisać do ścieżki wyszukiwania lokalizację, w której skrypty leżą.
Ja wybrałem - po lekturze, doświadczeniach, rozmowach i medytacjach - trzecią drogę. Mam w swoim profilowym folderze katalog /bin
, w którym trzymam całe swoje ‘prywatne oprogramowanie’ (pozasystemowe, takie którym ‘ręcznie’ zarządzam), w tym skrypty i tworzę do nich link’i w /bin
.
@LinGruby -> bash jest wstecznie kompatybilny z sh - prawie w 100% - więc większość skryptów sh wykonają się w bash’u.
tak jest sh
kompatybilny bash
ale nie po to jest wspomniany /usr/local/
żeby był pusty tylko po to coby tam wrzucać swoje rzeczy tego się nauczyłem w 2007 roku i to stosuję nie robiąc śmietnika swoimi skryptami etc. itp. w systemie
a wspomniany przez Ciebie /bin
jest skrótem do /usr/bin
i jest związany czysto z systemem
W najbliższych latach należy spodziewać się zmian w Filesystem Hierarchy Standard albo przynajmniej poważnej dyskusji. Niewiele dystrybucji stosuje się ściśle do referencyjnej struktury. Przykładem jest Manjaro, które (jak wiele innych) trzyma pliki w ‘zjednoczonych’ katalogach:
/usr/bin/
/usr/lib/
linkując, w ramach zgodności, do:
/bin/
/sbin/
/lib/
Użycie /usr/local/
jest zauważalne po zastosowaniu mikroskopu elektronowego.
Nie wspomnę o dystrybucjach, które radykalnie zrywają z FHS, stosując własne rozwiązania. Nihil stałego sub sole.
Ale, to temat na osobny wątek.
no zwłaszcza w Manjaroi3 gdzie wszystkie skrypty co do I3wm ( blokada itp. ) są własnie w /usr/local/bin
tak było w
manjaro-i3-17.0-stable-x86_64.iso
a nie sądzę coby się coś zmieniło acz nie śledzę już wydań Bernhard’a
Chyba się zmienia, bo obecnie w Manjaroi3 w /usr/local/bin mam tylko:
lightdm-settings xflock4