Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Instalace, aktualizace a spouštění => Téma založeno: miro_ 19 Července 2021, 17:53:07
-
Delsi dobu uzivam spoustec (vytvoreny z plochy) 'ping.sh' s nasledujicim obsahem:
#!/bin/bash
echo -e -n '\n Test funkcnosti cest
echo -e -n '\n WiFi modem \n'
ping 172.20.1.1 -c 5
....
echo -e -n '\n www.seznam.cz\n'
ping 77.75.79.53 -c 5
Chtel jsem podobne vytvorit spoustec 'copy_ap.sh'.
#!/ bin/bash
cp -i ~/__CB_prj_/grafy_fram/bin/Debug/g_fro_fram ~/__DATA_mereni_/__fram_/_graph_/
Volani z terminalu pres 'sh ./copy_ap.sh' je funkcni.
Pri volani spoustecem se ale 'cp' neprovadi ! Jen problikne okno terminalu.
Pokud predradim 'sudo cp ....' spoustec 'copy_ap.sh' se v terminalu ok zastavi
a OK pozaduje heslo ale obsah za ('cp..') se zase neprovede.
Pokousel jsem se neco o tomto problemu dohledat na webu ale neuspel jsem.
V cem je problem ?
-
Medzi / a bin/ v "#!/ bin/bash" mas medzeru.
-
Dik za upozorneni, po oprave je to stejne, spoustec neni funkcni !, '.sh' soubor z terminalu fungue OK !
-
Máš nastavená práva a spustitelnost?
-
Prava jsem samozrejme nastavoval !
Zkusil jsem za povel 'cp' pridat jeste test ping. (Edici '.sh' i spoustece provadim v 'Geany'.)
echo -e -n '\n www.seznam.cz\n'
ping 77.75.79.53 -c 5
I po teto uprave je v U20mate spoustec nefunkcni !
Napadlo mne, poslat '.sh' soubor i spoustec pres domaci sit do jineho PC s U16.04 a zkusit to tam.
K memu prekvapeni tam spoustec s '.sh' funguje OK bez jakychkoli uprav (jen jsem musel samozrejme povolit spousteni prekopirovaneho spoustece) !!
(Ten chodici test 'ping' z uvodu vlakna byl puvodne vytvaren a kopirovan do U20mate z jineho PC s U16.04 !)
Vypada to na nejakou zahadu tvorby spoustece v U20mate.
-
Složitější příkazy do spouštěčů (soubor *.desktop) piš vždy ve tvaru
Exec=sh -c "příkaz"
Takto lze do spouštěčů psát i vícenásobné příkazy (bez nutnosti používat mezičlánek ve formě skriptu).
Exec=sh -c "příkaz1 && příkaz2"
-
Dik za upozorneni, po oprave je to stejne, spoustec neni funkcni !, '.sh' soubor z terminalu fungue OK !
To je divne ja mam tiez Ubuntu Mate 20.04 a skript s cp funguje aj ked ho volam spustacom vytvorenym na ploche. Ako vytvaras ten spustac.
-
Ešte vyskúšaj pred príkaz "cp" dať kompletnú cestu k príkazu "cp". Ak nepomôže, tak ešte namiesto "~/" dosad celú cestu.
-
Nasel jsem v cem mam problem.
V diskuzi zde jsem neuvedl ze '.sh' soubor jsem nemel v '/home'. Pokud jej dam do '/home' tak spoutec pracuje OK.
( Spoustec 'ping' mi sel protoze 'ping.sh' jsem mel v '/home'. Podobne to bylo v U16. Tam jsem to nakopiroval pres sit do jeho '/home ')
-
Tak že by přeci jen ta práva? V /home stačí oprávnění uživatele, jinde musí být práva root. Nebo se mýlím?
-
Tak že by přeci jen ta práva? V /home stačí oprávnění uživatele, jinde musí být práva root. Nebo se mýlím?
S tím rootem určitě ne, problém musí být v něčem jiném. Ale nejprve je potřeba začít rozlišovat mezi spouštěči (*.application) a skripty (*.sh), protože každý z nich může v GUI fungovat jinak.
U skriptu je potřeba zjistit vlastnictví. Pokud je vlastníkem skriptu jiný uživatelský účet než ten, pod kterým se uživatel snaží skript spustit, je potřeba to zvlášť ošetřit. Také je třeba ověřit, že cílový uživatelský účet má přístup do adresáře, kde je skript uložen (což ale v tomto případě zřejmě platilo).
Vtip je v tom, že když obyčejný uživatel (ne-root) zkopíruje soubor z jednoho adresáře do druhého, automaticky tím přebere vlastnictví na sebe, takže by v podstatě stačilo skript zkopírovat o adresář vedle, původní smazat, přesunout kopii nazpět a mohl by začít fungovat.
-
Nasel jsem v cem mam problem.
V diskuzi zde jsem neuvedl ze '.sh' soubor jsem nemel v '/home'. Pokud jej dam do '/home' tak spoutec pracuje OK.
( Spoustec 'ping' mi sel protoze 'ping.sh' jsem mel v '/home'. Podobne to bylo v U16. Tam jsem to nakopiroval pres sit do jeho '/home ')
Zlozka /home patri uzivatelovi root a skupine root
Zlozka /home/user patri uzivatelovi user a skupine user
Tak
-
Diky za upozorneni. Blbe jsem to napsal. Opravuji a doplnuji:
V diskuzi zde jsem neuvedl ze '.sh' soubor jsem nemel v '/home/user'. Pokud jej dam do '/home/user' tak spoutec pracuje OK.
( Spoustec 'ping' mi sel protoze 'ping.sh' jsem mel v '/home/user'. Podobne to bylo v U16. Tam jsem to nakopiroval pres sit do jeho '/home/user')