skrypt bash dla wielu linii poleceń

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
masterdany88
Sędziwy Jeż
Sędziwy Jeż
Posty: 37
Rejestracja: 27 wrz 2008, 15:46
Płeć: Mężczyzna
Wersja Ubuntu: 11.10
Środowisko graficzne: KDE Plasma
Architektura: x86
Kontakt:

skrypt bash dla wielu linii poleceń

Post autor: masterdany88 »

witam. czy mógłby mi ktoś pomóc??
chciałbym utworzyć skrypt do instalacji gry z tych komend:

Kod: Zaznacz cały

#!/bin/bash
sudo apt-add-repository ppa:bartbes/love-unstable
sudo apt-get update 
sudo apt-get install love-unstable 
cd /opt/
sudo wget http://dl.dropbox.com/u/470896481/mari0-linux.tar.gz
sudo tar xvzf mari0-linux.tar.gz
sudo rm mari0-linux.tar.gz
cp mari0-linux/Mari0 ~/Pulpit/
cp mari0-linux/Mari0 ~/.kde/share/applnk/Games/

chodzi o to, żeby ten skrypt wykonywał po prostu wszystkie te komendy po kolei, nie muszą być tu żadne pętle, czy inne takie rzeczy.
P.S. potrzebuję ten skrypt dla znajomej (początkujący użytkownik). Nie chcę jej zaśmiecać komendami, bo się zniechęci. Dobrze by było gdyby mogła sobie kliknąć na ten plik ze skryptem, i żeby on sam za nią to zrobił (otworzył konsole i wykonał te instrukcje)
Czy jest taka możliwość?


Dodatkowo, czy wie ktoś z was jakie komendy trzeba podać, zeby utworzyć w kde wpis w kmenu w katalogu gry. Chodzi o to żeby skrót był w menu do wyboru :P, ja posłużyłem się tym:
cp mari0-linux/Mari0 ~/.kde/share/applnk/Games/
dziękuję za pomoc
Awatar użytkownika
soulreaver1
Wytworny Kaczor
Wytworny Kaczor
Posty: 409
Rejestracja: 13 mar 2009, 10:03
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Lokalizacja: 127.0.0.1

Re: skrypt bash dla wielu linii poleceń

Post autor: soulreaver1 »

Wklejasz ten kod do jakiegoś pliku skrypt.sh, użytkownik (sudo) nadaje mu uprawnienia wykonywania i uruchamia

Kod: Zaznacz cały

sh skrypt.sh
. W Gnome można też tak ustawić żeby kliknięcie w plik skryptu uruchamiało go, w KDE też pewnie się tak da.
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: skrypt bash dla wielu linii poleceń

Post autor: norvoles »

Po pierwsze, wyrzucasz wszystkie sudo ze skryptu.
Po drugie, uruchamiasz skrypt tak:

Kod: Zaznacz cały

sudo bash skrypt.sh
i wtedy każde kolejne polecenie będzie wykonane z prawami roota i (chyba) nie bedą działać prawidłowo ściezki typu:

Kod: Zaznacz cały

~/Pulpit
dlatego też lepiej daj pełne ścieżki. To jakoś tak bezpieczniej czasem :P
Awatar użytkownika
soulreaver1
Wytworny Kaczor
Wytworny Kaczor
Posty: 409
Rejestracja: 13 mar 2009, 10:03
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Lokalizacja: 127.0.0.1

Re: skrypt bash dla wielu linii poleceń

Post autor: soulreaver1 »

norvoles pisze:Po pierwsze, wyrzucasz wszystkie sudo ze skryptu.
Po drugie, uruchamiasz skrypt tak:

Kod: Zaznacz cały

sudo bash skrypt.sh
i wtedy każde kolejne polecenie będzie wykonane z prawami roota i (chyba) nie bedą działać prawidłowo ściezki typu:

Kod: Zaznacz cały

~/Pulpit
dlatego też lepiej daj pełne ścieżki. To jakoś tak bezpieczniej czasem :P
Ścieżki względne z "~" działają w skryptach bardzo dobrze, a używanie ścieżek bezwzględnych w odniesieniu do katalogów domowych użytkownika czyni skrypt nie przenośnym.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: skrypt bash dla wielu linii poleceń

Post autor: ethanak »

ścieżki z tyldą będą działać - sudo zmienia wyłącznie euid, a nie uid. inaczej mówiąc dalej jesteś tym samym użytkownikiem, ale uzyskujesz prawa innego (w tym przypadku roota).
co do uruchamiania: po pierwsze shebang w skrypcie, czyli pierwsza linia ma być

Kod: Zaznacz cały

#!/bin/bash
po drugie nadaj skryptowi prawo wykonywania, czyli nie musisz podawać interpretera bo już podałeś w shebangu.
po trzecie nie sudo a gksudo (albo odpowiednik) bo jak chcesz aby ci się skrypt uruchomił po kliknięciu to bez terminala dość trudno hasło dla sudo zapodać.
czyli

Kod: Zaznacz cały

gksudo /gdzie/mieszka/skrypt.sh
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: skrypt bash dla wielu linii poleceń

Post autor: norvoles »

Ok, już wiem. Zmyliło mnie to, że:

Kod: Zaznacz cały

sudo whoami
zwraca roota, ale jak zauważyłeś, to jest effective userid.
I faktycznie

Kod: Zaznacz cały

sudo echo $HOME
zwraca mój katalog domowy, a nie roota.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości