PATH (proměnná)

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Proměnná PATH je speciální proměnnou v operačních systémech, která určuje cesty (adresáře), ve kterých jsou umístěny spustitelné soubory. Tato proměnná je významná, protože umožňuje systému nalézt a spustit programy, i když jsou umístěny v jiném adresáři než je aktuální pracovní adresář. Proměnná PATH je používána v operačních systémech jako DOS, Windows, Unix a Linux. Ve Windows je proměnná PATH rozdělena pomocí středníku (;), zatímco v Unixu a Linuxu pomocí dvojtečky (:). Systémová proměnná PATH je obvykle nastavena automaticky při instalaci operačního systému nebo při instalaci nových programů a aktualizací. Uživatelé také mohou upravit tuto proměnnou, například přidat do ní nové adresáře obsahující spustitelné soubory programů. Použití proměnné PATH je jednoduché. Když uživatel zadá příkaz nebo jméno programu do příkazového řádku, systém prohledává všechny cesty uvedené v proměnné PATH a hledá soubor s odpovídajícím jménem v těchto adresářích. Pokud je soubor nalezen, systém ho spustí. Pokud není soubor nalezen v žádném z adresářů v proměnné PATH, systém vyhodí chybovou hlášku. Správné nastavení proměnné PATH je důležité pro správné fungování operačního systému a spouštění programů. Chybná nebo neaktualizovaná hodnota proměnné PATH může vést k problémům s nalezením a spuštěním programů. Proto je vhodné při instalaci programů a aktualizacích důkladně kontrolovat a aktualizovat tuto proměnnou.

PATH je v informatice název proměnné, která v některých operačních systémech obsahuje seznam adresářů, ve kterých jsou umístěny spustitelné soubory. Proměnnou PATH nalezneme v unixových systémech, DOSu, OS/2 i v Microsoft Windows. Uživatel může v příkazovém řádku jednoduše zadat název spustitelného souboru bez specifikace cesty k danému příkazu a interpret příkazů (shell) se ho pokusí najít ve všech adresářích, které jsou obsaženy v proměnné PATH. Teprve když v nich není nalezen, zahlásí uživateli chybu (obvykle ve smyslu „Příkaz nenalezen“, a podobně).

V operačních systémech je proměnná PATH obvykle součástí proměnných prostředí, což zajišťuje její dědění do nově vzniklých procesů. Proměnná PATH zlehčuje spouštění často používaných programů umístěných ve vlastních adresářích. +more Pokud jsou ale v proměnné PATH názvy adresářů seřazeny neefektivně, zpomaluje to běh operačního systému - hledá se v mnoha složkách, tedy i na nesprávných místech.

Unixové systémy

V unixových systémech je proměnná PATH děděna potomkem po systémovém volání fork. Seznam adresářů je oddělen znakem dvojtečka.

$ echo $PATH /sbin:/usr/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/huzva/bin

Ve výše uvedeném příkladu zadal uživatel na prvním řádku příkaz pro vypsání proměnné PATH, který je vyznačen tučně. Obsah proměnné PATH je vypsán na druhém řádku. +more Adresáře /bin, /usr/bin a /usr/local/bin jsou vkládány do většiny uživatelských nastavení (vždy ale záleží na konkrétní implementaci). Správce počítače má navíc zařazeny adresáře /sbin a /usr/sbin, aby mohl jednoduše provádět příkazy pro správu systému.

Když uživatel zadá do příkazového řádku příkaz nebo je-li z nějakého programu vykonáno volání exec, systém prohledá zleva doprava všechny adresáře uvedené v proměnné PATH a spustí první příkaz, který takto najde.

Aktuální adresář v PATH

V unixových systémech obvykle není v proměnné PATH uveden aktuální adresář (. ) a neprohledávají ho ani interpret příkazů (shell) ani systémová volání exec. +more Důsledkem je, že když chce uživatel spustit skript (nebo program) ze složky, ve které se právě nachází (a není to jeden z adresářů uvedený v PATH), musí uvést relativní cestu (. /script. sh) nebo absolutní cestu (např. /home/huzva/script. sh).

Důvodem je bezpečnostní riziko kvůli možnému zneužití útočníkem nebo škodlivým malwarem, kdy by mohl kdokoliv vložit škodlivý příkaz například do adresáře /tmp a pak jen čekat, až se uživatel (nebo správce) do tohoto adresáře přepne a tento příkaz zadá. Přednostní provedení vloženého škodlivého příkazu by pak proběhlo bez vědomí oběti útoku. +more Podobně by mohl být na různých místech systému narafičen příkaz obvyklých překlepů (například zápis s chybějící mezerou ls-l).

DOS, Microsoft Windows

V systémech DOS, OS/2 a Microsoft Windows je seznam adresářů oddělen znakem středník. V následujícím příkladu je příkaz pro výpis proměnné PATH uveden na prvním řádku a je vyznačen tučně:

C:\Users\Iva>echo %PATH% C:\Windows\system32;C:\Windows

Typicky je prvním adresářem uvedeným v PATH složka C:\WINDOWS\system32 a dále jsou přítomny názvy mnoha adresářů (ale ne všech), kde je instalován nějaký program určený pro volání z příkazového řádku. Některé programy vkládají během instalace názvy svých adresářů do proměnné PATH nikoliv na konec, ale na začátek seznamu. +more Důvodem je, aby v případě spouštění netrvalo jejich vyhledávání dlouho nebo aby překryly jiné příkazy, které jsou v adresářích uvedených později (např. systémové nástroje z adresáře C:\Windows\system32). V éře DOSu bylo obvyklé vkládat proměnnou PATH do souboru AUTOEXEC. BAT tímto způsobem:.

PATH {program directory};%PATH%

nebo

SET PATH={program directory};%PATH%.

Prohledání aktuálního adresáře

Ve všech zmíněných systémech (DOS, OS/2 a Microsoft Windows) je po vložení příkazu nebo při systémovém volání nejdříve prohledán pracovní adresář (. ) a teprve až poté jsou zleva doprava prohledány adresáře uvedené v proměnné PATH. +more Bezpečnostní riziko, jak je popsáno výše v kapitole pro unixové systémy, v těchto systémech existuje také, ale má relativně menší dopad, protože jsou tyto systémy typicky používány pouze jednou osobou a uživatelé v příkazovém řádku pracují zřídka.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top