Strona 1 z 1
[BASH] 'sudo su -' w skrypcie.
: 03 lut 2011, 15:02
autor: mihau
Hej.
Chce napisać mały skrypt który będzie instalował aplikacje uruchamianą pod wine, konfigurował ją itp.
Aczkolwiek jest mały zgrzyt, w firmie wszystkie laptopy mają Ubuntu 9.04 a oficjalne repo z wine dla 9.04 wygasły, znalazłem inne z którego się instaluje, lecz wymaga to wrzucenia do /etc/apt/source.list tego repo, więc wiadomo, tylko z roota można zapisać coś w source.list...
Jak to teraz ładnie ująć, żeby wrzucało np. przez sed -i, link repo do source.list'a.
Odp: [BASH] 'sudo su -' w skrypcie.
: 03 lut 2011, 15:26
autor: azhag
Prościej będzie utworzyć plik w katalogu /etc/apt/sources.list.d/.
Wystarczy
Kod: Zaznacz cały
sudo echo wpis >/etc/apt/sources.list.d/plik
Odp: [BASH] 'sudo su -' w skrypcie.
: 03 lut 2011, 22:57
autor: empitt
Lub:
Kod: Zaznacz cały
sudo bash -c "echo 'deb repo...' >> /etc/apt/sources.list"
lub:
Kod: Zaznacz cały
echo 'deb repo...' | sudo tee -a /etc/apt/sources.list
Odp: [BASH] 'sudo su -' w skrypcie.
: 03 lut 2011, 23:44
autor: LukAs
A jeśli z jakiegoś powodu lista Ci się rozrośnie, to możesz zastosować mechanizm osadzania dokumentu lub wczytać repozytoria z pliku. Przy dużej liście adresów, użycie echo robi się niewygodne i trzeba łamać wiersze. No i kod skrypt robi się nieładny/nieczytelny.
Kod: Zaznacz cały
#!/bin/bash
sudo tee -a /etc/apt/sources.list <<EOF
# Wine Ubuntu 10.04
deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu lucid main
# Wine Debian
deb http://wine.budgetdedicated.com/apt
EOF
Jeśli nie chcesz widzieć adresów na ekranie, to można przekierować wyjście do kosza
Kod: Zaznacz cały
sudo tee -a /etc/apt/sources.list 1> /dev/null
Zrób też kopię pliku

Odp: [BASH] 'sudo su -' w skrypcie.
: 04 lut 2011, 11:36
autor: empitt
Przy dużej liście adresów, użycie echo robi się niewygodne i trzeba łamać wiersze.
Przesada...
Kod: Zaznacz cały
#!/bin/bash
sudo bash -c "echo 'deb repo...
deb repo1...
deb repo2...
deb repo3...' >> /etc/apt/sources.list"
No i kod skrypt robi się nieładny/nieczytelny.
Nie zauważyłem tego, aby powyższy kod był nieczytelny i nieładny. Faktycznie Twoja wersja jest o ciut milsza, ale na moje oko echo wcale gorzej nie wypada. Raczej nazwałbym to kwestią gustu i przyzwyczajenia.
Odp: [BASH] 'sudo su -' w skrypcie.
: 04 lut 2011, 12:17
autor: mihau
Potestuję sobie dzisiaj i zobaczymy co z tego wyjdzie;) dzięki wielkie
Odp: [BASH] 'sudo su -' w skrypcie.
: 06 lut 2011, 10:19
autor: azhag
empitt pisze:Przesada...
Kod: Zaznacz cały
#!/bin/bash
sudo bash -c "echo 'deb repo...
deb repo1...
deb repo2...
deb repo3...' >> /etc/apt/sources.list"
Nie zauważyłem tego, aby powyższy kod był nieczytelny i nieładny. Faktycznie Twoja wersja jest o ciut milsza, ale na moje oko echo wcale gorzej nie wypada. Raczej nazwałbym to kwestią gustu i przyzwyczajenia.
Można też:
Odp: [BASH] 'sudo su -' w skrypcie.
: 06 lut 2011, 14:33
autor: borzole
można tak:
Kod: Zaznacz cały
main(){
echo Hello $(whoami)
}
# run_as_root
if [ `id -u` != 0 ] ; then
abs_path="$(readlink -f `dirname $0`)/$(basename $0)"
echo "[su -] uruchaminie jako root"
su -c"/bin/bash $abs_path $*"
else
main $*
fi
Odp: [BASH] 'sudo su -' w skrypcie.
: 07 lut 2011, 14:51
autor: azhag
borzole pisze:można tak:
Kod: Zaznacz cały
main(){
echo Hello $(whoami)
}
# run_as_root
if [ `id -u` != 0 ] ; then
abs_path="$(readlink -f `dirname $0`)/$(basename $0)"
echo "[su -] uruchaminie jako root"
su -c"/bin/bash $abs_path $*"
else
main $*
fi
Drobna poprawka:
Odp: [BASH] 'sudo su -' w skrypcie.
: 07 lut 2011, 15:29
autor: borzole
to już chyba jeden pies != czy -ne, czy może jest coś o czym nie wiem?
Odp: [BASH] 'sudo su -' w skrypcie.
: 07 lut 2011, 15:37
autor: azhag
-ne, -eq, -lt i spółka służą do porównywania liczb
Odp: [BASH] 'sudo su -' w skrypcie.
: 07 lut 2011, 16:10
autor: borzole
Tyle to ja wiem, pytam czy jest jakaś różnica w działaniu
[ `id -u` -ne 0 ]
i
[ `id -u` != 0 ]
dla mnie jest bardziej czytelny zapis z C, jest stosowany też w innych językach.