Portál AbcLinuxu, 5. května 2025 15:05

Dotaz: Chyba při spuštění programu

14.4.2019 16:01 host
Chyba při spuštění programu
Přečteno: 399×
Odpovědět | Admin
Ahoj, v terminálu spustím příkaz, který normálně funguje
micro /opt/myscript
pokud ale vytvořím soubor třeba 'test' a do něj vložím 'micro /opt/myscript', uložím, nastavím soubor pro spuštění a soubor spustím, dostanu chybu
./test: line 1: micro: command not found
Proč? Díky

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.4.2019 16:07 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkonrolujte jaká je při běhu ze skriptu cesta PATH, v nějakém z jejích adresářů musí být umístěn spustitelný soubor micro:

#!/bin/bash

echo $PATH

micro /opt/myscript

#konec
-- OldFrog
Jendа avatar 14.4.2019 16:34 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba je to alias v interaktivním shellu. type micro, which micro.
14.4.2019 16:36 NN
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Je to na prvnim radku. Chybi shabang.
Jendа avatar 14.4.2019 16:43 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Takový soubor se pak automaticky spustí přes /bin/sh a PATH zdědí, ne? Takže pak micro musí být buď alias, nebo builtin aktuálního shellu.
14.4.2019 18:40 NN
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Fakt? Potom ok..
14.4.2019 19:07 debian+
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Zrejme nie.
$ echo 'echo $SHELL' > /tmp/program
$ chmod +x /tmp/program 
$ /tmp/program 
/bin/bash
$
Vytvoril som si uzivatela test a dal du vychodiskovy /bin/sh. A pod tym uzivatelom spustil ten skript.

Zaver: Ak nie je v skripte urceny shell, skript sa spusta vychodiskovym shellom uzivatela.
# napr. vychodiskovy shell
cat /etc/passwd|grep $USER:|tr ':' ' ' | awk '{print $7}'
To plati na Debian testing.
14.4.2019 18:53 host
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nerozumím vůbec tomu co jste psali ale může mi prosím někdo poradit jak to opravit?

V souboru .bashrc mám
alias micro='/opt/micro'
Jendа avatar 14.4.2019 18:57 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Dáš to i do toho skriptu, nebo budeš spouštět celou cestou /opt/micro.

Mimochodem většinou se nedávají binárky přímo do /opt (na to je /usr/local/bin), v /opt bývají adresáře s jednotlivými programy a až ty obsahují spustitelné soubory.
14.4.2019 19:08 host
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Dáš to i do toho skriptu, nebo budeš spouštět celou cestou /opt/micro.
A to prosím nejde vložit někam, kde to bude dostupné i tomu scriptu? Prostě dostupné všem? Editor nano žádný problém nemá, ten funguje úplně všude.

Mimochodem většinou se nedávají binárky přímo do /opt (na to je /usr/local/bin), v /opt bývají adresáře s jednotlivými programy a až ty obsahují spustitelné soubory.
To nevím, já ten editor micro neprogramoval a tam se to automaticky nainstalovalo, neptalo se to na cestu. :(
14.4.2019 19:26 debian+
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
A to prosím nejde vložit někam, kde to bude dostupné i tomu scriptu? Prostě dostupné všem? Editor nano žádný problém nemá, ten funguje úplně všude.
Ano. Riesenia maju svoje plusy/minusy.

1. moznost - Ako root zadaj:
ln -s /usr/local/bin/micro /opt/micro
2. moznost - pridat, ze v /opt su spustitelne programy (prida pre akt. uzivatela):
echo 'export PATH=$PATH:/opt' >> ~/.bashrc
16.4.2019 16:37 host
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Díky moc, funguje to..
Řešení 1× (pepe_)
15.4.2019 08:31 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
V princípe platí, že keď shell dostane na vstup príkaz, ktorý je programom(*) - a neuvedieš celú cestu - tak ho hľadá v adresároch poznačených v premennej prostredia PATH. Keďže 'nano' je v adresári, ktorý je v PATH tak "funguje". Keďže 'micro' je v /opt a '/opt' nie je v PATH, tak "nefunguje". Ak chceš mať program 'micro' v /opt, tak musíš zariadiť, aby ho shell vedel nájsť. Buď rozšírením PATH (**) alebo tak, že v niektorom z adresárov, ktoré už v PATH sú, urobíš niečo, čo umožní shell-u nájsť /opt/micro. debian+ vyššie dáva návod, ako to dosiahnuť.
Nerozumím vůbec tomu co jste psali ale může mi prosím někdo poradit jak to opravit?

V souboru .bashrc mám
alias micro='/opt/micro'
(*) takže keď napíšeš "micro" tak shell na vstup nedostal program, ale alias. Pre alias platí:

https://linux.die.net/man/1/bash :
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
(**) keď upravuješ PATH, tak treba dbať na to, pre koho ho upravuješ. Či pre seba, alebo pre všetkých na systéme. To, ako to urobiť pre všetkých na systéme závisí od distribúcie.
16.4.2019 16:37 host
Rozbalit Rozbalit vše Re: Chyba při spuštění programu
Děkuji moc za vysvětlení..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.