Portál AbcLinuxu, 11. května 2025 04:49

Dotaz: Spusteni bash skriptu rozdil sh a ./

9.3.2009 11:55 tascoa | skóre: 11
Spusteni bash skriptu rozdil sh a ./
Přečteno: 5913×
Odpovědět | Admin

Jaky je rozdil mezi tim, kdyz bash skript spustim pomoci sh skript nebo ./skript? Vi nekdo?

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

Odpovědi

9.3.2009 12:11 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
Odpovědět | | Sbalit | Link | Blokovat | Admin
Při spuštění přes sh skript interpretuje skript (kdo co) sh a skript nemusí mít executable flag ani shebang, při spuštění přes ./skript může (koho co) skript interpretovat i jiný program, pokud je uveden v direktivě hashbang #! direktivě (vizte google shebang) a skript musí mít executable flag.
9.3.2009 12:22 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
Někomu třeba nemusí být jasný význam toho ./, není to nic kriptického, jde o to že většinou nemáte (z dobrých důvodů) aktuální adresář v proměnné PATH, kde bývají cesty k adresářům se spustitelnými soubory a v případě napsání "skript" se v nich skript hledá. Skript nalézající se v aktuálním adresáři je tedy třeba uvést nějakou cestou k němu, aby bylo jasné, že nechcete hledat skript v PATH, ale chcete spustit nějaký konkrétní skript např. /home/user/bin/skript nebo pokud jste v home tak bin/skript nebo pokud jste v bin tak napíšte co... no ./skript. Nebo třeba ../bin/skript či ../bin/tmp/../skript to už je celkem jedno.
9.3.2009 12:22 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
Někomu třeba nemusí být jasný význam toho ./, není to nic kryptického, jde o to že většinou nemáte (z dobrých důvodů) aktuální adresář v proměnné PATH, kde bývají cesty k adresářům se spustitelnými soubory a v případě napsání "skript" se v nich skript hledá. Skript nalézající se v aktuálním adresáři je tedy třeba uvést nějakou cestou k němu, aby bylo jasné, že nechcete hledat skript v PATH, ale chcete spustit nějaký konkrétní skript např. /home/user/bin/skript nebo pokud jste v home tak bin/skript nebo pokud jste v bin tak napíšte co... no ./skript. Nebo třeba ../bin/skript či ../bin/tmp/../skript to už je celkem jedno.
9.3.2009 12:22 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
najdi jeden rozdíl :D :(
9.3.2009 14:41 tascoa | skóre: 11
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./

kriptickeho / kryptickeho :D

9.3.2009 12:22 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./

Ještě bych doplnil, že /bin/sh bývá většinou (symbolický) odkaz např. na /bin/bash, u mého Kubuntu je to odkaz na /bin/dash.

Potom je rozdíl např. mezi "bash skript" a "sh skript", i přestože třeba /bin/sh je symbolický odkaz na /bin/bash. Pokud skirpt spustíte jako "sh skript", tak se např. Bash přepne do "kompatibilního módu" (POSIX).

9.3.2009 12:16 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokial by si to spustal z csh, tak "sh skript" ho spusti v sh a "./skript" v csh, co uz rozdiel je. Podla testov, ktore som si prave vyskusal tak "sh skript" ignoruje shebang nastaveny v skripte na /bin/csh a spusta to natvrdo v sh
If you hold a Unix shell up to your ear, you can you hear the C.
9.3.2009 12:36 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Spusteni bash skriptu rozdil sh a ./
Jen upřesním že ./skript spustí skript v csh jen pokud čistě náhodou nemá v hlavičce uvedený jiný interpreter a nebo tam nemá uveden žádný. Zjednodušeně řečeno sh skript je násilné předhození skriptu sh, pokud třeba ./skript nefunguje, nemá executable flag a my víme že má být spouštěn sh, a nebo k tomu máme nějaký jiný obskurní důvod, který mne nenapadá.

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.