1. PATH-ympäristömuuttuja Windowsissa

Mac/Linux-ohjeet löytyvät sivun lopusta!

# nppvideo

Kun komentoriviltä kirjoitetaan ohjelman nimi, lähtee komentorivi etsimään ohjelman nimeä hakemistoista, jotka on lueteltu ympäristömuuttujassa nimeltä path.

Ympäristömuuttujan path arvon näkee kun kirjoittaa Git Bashissa tai WSL:ssä

echo $PATH

tai cmd ikkunassa

set path

tai PowerShellissä

$env:PATH

Ympäristömuuttujassa on lueteltu hakemistojen nimiä, erotin riippuu käytetystä shellistä ja se voi joko kaksoispiste tai puolipiste. Huomaa, että lista näyttää kullakin käyttäjällä aina hieman erilaiselta.

Esimerkki Git Bash:

/c/ProgramData\Oracle\Java\javapath:/c/Program Files (x86)\Common Files\Oracle\Java\javapath:/c/Program Files\Java\jre-9
.0.4\bin:/c/devel\Python\Python36-32\Scripts\:/c/devel\Python\Python36-32\:/c/devel\perl\site\bin:/c/devel\perl\bin:/c/W
INDOWS\system32:/c/WINDOWS:/c/WINDOWS\System32\Wbem:/c/WINDOWS\System32\WindowsPowerShell\v1.0\:/c/Program Files\Java\jd

Esimerkki CMD:

C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;c:\Program Files\Java\jre-9
.0.4\bin;C:\devel\Python\Python36-32\Scripts\;C:\devel\Python\Python36-32\;C:\devel\perl\site\bin;C:\devel\perl\bin;C:\W
INDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jd
# pathext

Windows pohjaisissa shelleissä (cmd, PowerShell) ohjelman etsimiseen vaikuttaa myös suoritettavien ohjelmien tiedostotarkenteita listaava ympäristömuuttuja pathext (kuinka näet sen arvon?), joka voisi olla esimerkiksi

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

Jos annetaan esimerkiksi komento

python

niin esimerkin koneessa katsotaan ensin löytyykö python.com-niminen tiedosto ensimmäiseksi hakemistosta:

C:\ProgramData\Oracle\Java\javapath

Jos ei löydy, katsotaan löytyykö python.exe ko hakemistosta ja näin käydään yksitellen vaihtamassa nimen perään kukin seuraavista pathext-muuttujassa olevista tiedoston nimen tarkentimista (bat, cmd, vbs, jne.). Jos yhtäkään lueteltuja tarkenteita vastaavaa tiedostoa ei löydä tästä hakemistosta, niin sitten siirrytään path-muuttujan seuraavaan hakemistoon ja jatketaan. Esimerkin tapauksessa hakemistosta

C:\devel\Python\Python36-32

löytyy ohjelman python.exe ja tiedoston löydyttyä se käynnistetään. Mutta jos mistään path-muuttujassa luetelluista hakemistosta ei löydy halutun nimistä suoritettavaa tiedostoa, niin silloin annetaan virheilmoitus:

'python' is not recognized as an internal or external command,
operable program or batch file.

Yleensä asennusohjelmat lisäävät asentamansa ohjelman nimen hakupolkuun (eli ympäristömuuttujaan path), mutta näin ei käy kaikissa tapauksissa. Silloin meidän pitää itse päivittää hakupolkua.

1.1 Taustaa

Jotta voit käynnistää PowerShellillä vaikkapa HelloWorld-ohjelman (siis exe-tiedoston tai muun ajettavan ohjelman), täytyy sinulla olla aktiivisena se kansio, missä ohjelma sijaitsee. Esimerkiksi jos HelloWorld.exe sijaitsee kansiossa

C:\MyTemp\anlakane

niin voit käynnistää kyseisen ohjelman navigoimalla tuohon kansioon cd-komentoja käyttämällä, ja sitten kirjoittamalla

.\HelloWorld.exe

Toinen vaihtoehto ohjelman käynnistämiseksi on kirjoittaa ohjelman koko polku.

C:\MyTemp\anlakane\HelloWorld.exe

Koska usein on kätevää käynnistää ohjelma kirjoittamalla vain lyhyesti ohjelman nimi, kuten yllä HelloWorld.exe, tarvitaan PATH-ympäristömuuttujaa.

1.2 csc-kääntäjän lisääminen PATH-ympäristömuuttujaan

Luennolla set-komennolla tehty asetus vaikuttaa vain siihen auki olemaan komentoikkunaan. Alla on ohjeita miten asetuksen saa pysyvästi. Käytti mitä alla olevaa tapaa tahansa, pitää sen jälkeen käynnistää uusi komentoikkuna ja asetus vaikuttaa vasta siellä.

Windows

Klikkaa Käynnistä-kuvaketta ja kirjoita environment \(\rightarrow\) Klikkaa Edit environment variables for your account (suomalaisessa kirjoita ympäristö ja valitse Muokkaa tilin ympäristömuuttujia ) \(\rightarrow\) Valitse Path-muuttuja ja paina Edit \(\rightarrow\) Klikkaa New ja copy-pasteta seuraava rivi ja paina lopuksi OK.

Huomautus macOS- ja Linux-käyttäjille

macOS- ja Linux-järjestelmissä PATH-ympäristömuuttujaa ei tarvitse asettaa, vaan mcs-kääntäjäohjelmaa voidaan oletuksena käyttää komentorivillä mistä kansiosta käsin tahansa.

1.3 Valinnainen: Oman bin, bat tai vastaavan kansion lisääminen

Jos haluat lisätä PATH-ympäristömuuttujaan esimerkiksi kansion c:\MyTemp\bin tai c:\bat tms, niin tee se kuten edellä, mutta pitkän roslyn hakemiston tilalle tarvittava hakemiston nimi.

Muista sulkea komentorivi ja käynnistää se uudestaan PATH-muuttujan päivittämiseksi komentoriville.

1.4 Lisää taustaa ympäristömuuttujista

Ympäristömuuttuja tarkoittaa yksinkertaisesti avain-arvo-paria, jossa kytketään jokin avain (esim. PATH) tiettyyn arvoon (kuten C:\Mytemp;C:\Windows). Ympäristömuuttujat ovat kaikkien Windows-ohjelmien käytettävissä, ja siinä mielessä ne ovat niitä kuuluisia "globaaleja muuttujia".

PATH-muuttuja on pienoinen erikoistapaus ympäristömuuttujien joukossa. Windows koostaa System- ja User-tason PATH:sta yhden kokonaisuuden, jossa on ensin System-muuttujassa määritelty osio ja sen perässä User-osio. Jos siis haluat peruskäyttäjänä lisätä jonkin polun PATH:n hakulistaan ja sitä ei ole User-puolella, luo User-puolelle muuttuja nimeltä PATH. Lopputuloksena PATH sisältää ''sekä'' System- ''että'' User-puolella määritellyt polut.

Tällä tavalla asetettuna PATH-muuttujan arvo säilyy, vaikka tietokone käynnistetään uudelleen. Huomaa, että kun muutat arvoa tällä tavalla, niin asetus ei näy jo käynnissä oleviin ohjelmiin. Esimerkiksi auki oleva komentorivi-ikkuna pitäää sulkea ja avata uudelleen.

Kun muutat PATH-muuttujan arvoa, niin älä tyhjennä olemassa olevaa, vaan laita olemassa olevan perään puolipiste (;) ja sitten sen perään kirjoita uusi lisättävä hakemiston nimi.

Esimerkiksi, jos loppu on ennestään

C:\Windows\System32;C:\Windows

ja haluat lisätä csc-kääntäjän hakemiston

PATH-muuttujaan, niin muuta muuttujan arvo muotoon

C:\Windows\System32;C:\Windows;

Alkuosa voi tietenkin olla sinulla jotain muuta, joten ole tarkkana soveltaessasi ohjetta.

Jos luot uuden muuttujan, niin silloin siihen ensimmäisen kerran kirjoitetaan pelkkä lisättävä arvo, esim: c:\bin. Siis ilman puolipisteitä.

2. PATH Linuxissa ja Macissa

2.1 Asettaminen

Oletetaan että on tehty kansioon ~/bin hyviä komentoja. Tämä halutaan lisätä hakupolkuun. Ubuntussa onkin valmiina tämä polussa, eli sitä ei edes tarvitsisi lisätä. Mutta jos tarvitsisi, niin tilapäisesti se saataisiin polkuun:

export PATH="~/bin:$PATH"

Jos haluat lisäyksestä pysyvän, niin avaa tiedosto ~/.profile joka sijaitsee kotikansiossasi. Huomaa, että tiedoston nimen edessä on piste, eli se on piilotettu tiedosto. Tiedostolla ei myöskään ole tiedostopäätettä, kuten .txt.

Jos tiedostoa .profile ei ole olemassa niin luo se kotikansioosi, ja lisää siihen alkuun yllä annettu export-komento.

Jos tiedosto oli jo olemassa, niin etsi rivi jossa on näkyy ylemmän kaltainen export PATH-komento. Muokkaa sitä lisäämällä ensimmäisen lainausmerkin jälkeen ~/bin: . Jos sellaista riviä ei ole, niin lisää johonkin tiedoston kohtaan yllä annettu export-litania.

Tallenna .profile-tiedosto, ja käynnistä pääte uudestaan. Tarkista muutoksen onnistuminen komennolla:

echo $PATH

HUOM! Mikäli .profile muutokset eivät ole onnistuneet, eli echo $PATH ei näytä uutta asetettua polkua, niin kotikansiossasi on todennäköisesti .bash_profile tiedosto, joka yliajaa .profile tiedoston.

Mikäli näin on, niin voit joko poistaa .bash_profile tiedoston (mikäli siellä ei ole mitään tarvittavaa) tai vaihtoehtoisesti lisätä edellä tehdyt muutokset .bash_profile tiedostoon, jonka pitäisi ajaa saman asian kuin .profile tiedosto.

2.2 Ajo-oikeus

Unix-pohjaisissa järjestelmissä pitää muistaa antaa myös ajo-oikeus tehdyille skripteille. Mikäli meillä olisi ~/bin hakmeistossa tehtynä skripti kaanna, niin sille voitaisiin laittaa ajo-oikeudet komennolla:

chmod 755 ~/bin/kaanna

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.