Portál AbcLinuxu, 14. května 2024 04:47


Dotaz: Znak pro relativni cestu vudci ceste k programu?

20.2.2009 22:45 Tomáš Skočdopole | skóre: 13
Znak pro relativni cestu vudci ceste k programu?
Přečteno: 160×
Odpovědět | Admin

Dobry den,

vsichni vime, ze soubor ~/foo je v domovskem adresari, ../bar je v adresari o uroven vyse atd...

A ja bych se chtel zde zeptat, zda je definovano neco podobneho pro zadani cesty k souboru pro program, aby byla relativni vudci ceste ke spoustenemu programu.

Napriklad kdyz spustim $ program --plugin "pluginA" --plugin "~/adresar/pluginB" --plugin "???/pluginX"

Tak vlastne pluginA je v aktualnim adresari kde jsem nyni, pluginB je v adresari /home/user/adresar/ a potreboval bych aby pluginX byl ze stejneho adresare, kde lezi binarka programu.

Existuje neco takoveho?

Dekuji.

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

Odpovědi

20.2.2009 23:08 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie. ~ je vec, ktorú spracováva shell - viď EXPANSION v manuálovej stránke shell-u. Adresár .. je skutočný adresár, nie je to nejaká špeciálna obsluha v API alebo shelli. Potrebuješ zistiť, kde leží binárka spusteného programu. Buď sa tá binárka našla podľa abolútnej cesty, podľa relatívnej cesty, alebo podľa PATH. Ošetri tieto tri pripady a vo väčšina prípadov to zafunguje.
michich avatar 20.2.2009 23:40 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
V argv[0] máš cestu ke své binárce.
20.2.2009 23:50 R
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
Nemas. V argv[0] mas prikaz tak, ako bol spusteny. Takze ak je program v ceste a spustis ho napisanim jeho nazvu v shelli, argv[0] bude obsahovat len ten nazov. A to tiez nemusi byt vzdy pravda, je to len konvencia (zalezi od rodicovskeho procesu, co vlozi do argv[0]).
michich avatar 21.2.2009 00:20 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
ak je program v ceste a spustis ho napisanim jeho nazvu v shelli, argv[0] bude obsahovat len ten nazov
Takhle se to u mě zjevně nechová. Mám v takovém případě v argv[0] plnou cestu.

Další možnost je kouknout, kam vede symlink /proc/<pid>/exe.
21.2.2009 00:58 l4m4
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
To se ti to chová nějak divně. V argv[0] je to, co tam postrčil rodičovský proces v argumentu execve(), a to může být kdeco.

V /proc je snažší se podívat na /proc/self/exe.
michich avatar 21.2.2009 06:55 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
V argv[0] je to, co tam postrčil rodičovský proces v argumentu execve(), a to může být kdeco.
No jo, může. Můj shell to dělá tak, jak jsem uvedl. Jiný to může dělat jinak.
21.2.2009 08:28 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Znak pro relativni cestu vudci ceste k programu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bývá to tak, že program má natvrdo nebo v nějakém konfiguráku stanoveno, kde bude hledat své pluginy, pokud budou mít relativní cestu. Pro dohledání binárky můžete případně použít which či podobné.

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.