Jak zrobić aby skrypt sh był dostępny z polecenia


(pain3hp) #1

Jak to zrobić? Napisałem skrypt w shellu, mogę go uruchamiać ". nazwa.sh" a jak zrobic aby się uruchomił po prostu wpisując komendę "nazwa"?


(Konradsala98) #2

Rozumiem że to jest na powłokę sh?

Spróbuj wrzucić go do katologu /bin albo /usr/bin i daj chmod u+x twój_skrpyt


(bachus) #3

zmień mu nazwę z “nazwa.sh” na “nazwa”. *nix nie używa rozszerzeń, to tylko dla Twojej informacji. Najpierw zadeklaruj interpreter. Sprawdź, gdzie siedzi:

[bachus@mydevil]:<~>$ which sh
/bin/sh

Zadeklaruj go na początku skryptu:

#!/bin/sh

[bachus@mydevil]:<~>$ nano pain3

#!/bin/sh
echo Hello

Skrypt ma się wykonywać:

[bachus@mydevil]:<~>$ chmod +x pain3

Powinno banglać w tej postaci.

 

 

 


(Pompon7) #4

Zróbmy tak

mkdir ~/skrypty ##tworzy w twoim katalogu domowym ,katalog skrypty , tam będą twoje skrypty umieszczane

echo “export PATH=”$PATH:~/skrypty"" >>~/.bashrc ## dodaje na koniec do zmiennej PATH twój katalog gdzie będzie ci szukał skryptów, i to wpisujesz do pliku startowego

Aby móc te skrypty odpalać wpierw uczyń te skrypty wykonywalnymi .

TE 2 KOMENDY WYKONUJESZ BEZ ROOT’A.

EDIT:

Po zrobieniu tego wydaj polecenia ze zwykłego użytkownika

source ~/.bashrc ##przeładuje plik

lub uruchom ponownie terminal


(Slepowidzacy) #5

Dodaj alias w .bashrc

 

alias skryptxyz=“cd /home/pain3hp/skrypty && ./skryptxyz”

 

Aby móc go wykonać:

 

cd /home/pain3hp/skrypty && chmod +x skryptxyz.sh

 

Zrestartuj terminal (lub source ~/.bashrc)


(Pompon7) #6

Bez urazy (nie to mam na celu tj. krytykę Ciebie, doceniam wysiłki) , twój sposób nie zadziała zrobiłeś literówkę w tym aliasie . Po drugie po co alias , jak może dodać katalog do zmiennej PATH i to załatwi sprawę .Twoje rozwiązanie jest na jeden skrypt równie dobrze by można było dać :

alias cmd="/path/skrypt.sh"

Natomiast PATH będzie lepsze bo dla n plików będących  w katalogu .  Z góry przepraszam , jeśli cię uraziłem tą krytyką .


(saturno) #7

 

Skrypty “lokalne” to raczej nie do katalogów systemowych.

Lepiej do:

/usr/local/bin

lub:

~/bin
(/home/user/bin)

tom@dhcppc0:~$ ls -hal /home/tom/bin
razem 60K
drwxr-xr-x 2 tom tom 4,0K lip 16 00:43 .
drwxr-xr-x 99 tom tom 4,0K lip 16 00:43 ..
-rw------- 1 tom tom 49 mar 25 23:53 .directory
-rwxr-xr-x 1 tom tom 35 mar 3 19:01 ekran
-rwxr-xr-x 1 tom tom 250 kwi 8 2014 kopia_chromium
-rwxr-xr-x 1 tom tom 136 lut 10 2013 kopia_mozilla
-rwxr-xr-x 1 tom tom 196 lut 17 16:31 kopia_pakietów
-rwxr-xr-x 1 tom tom 204 lut 22 22:25 kopia_PlayOnLinux
-rwxr-xr-x 1 tom tom 176 lut 22 22:26 kopia_wine
-rwxr-xr-x 1 tom tom 129 sty 24 2014 reset_memory
-rwxr-xr-x 1 tom tom 134 mar 19 2014 reset_PlayOnLinux
-rwxr-xr-x 1 tom tom 68 lut 22 22:50 reset_swap
-rwxr-xr-x 1 tom tom 107 lut 22 22:36 reset_wine_f
-rwxr-xr-x 1 tom tom 83 mar 20 2012 wget_winetricks