Alias on tapa tehdä pitkille komentoriveille oikopolkuja, lyhentää niitä. WP-CLI käyttää aliaksia ainoastaan lyhentämään verkkosivujen polkuja, joka sekin on etu, mutta muuta se ei tee. Sen sijaan käyttämääsi linuxiin saa rakennettua huomattavasti laajempia. Ainakin jos laajuus tarkoittaa pitkien komentorivirotlien lyhentämistä. Monimutkaisempiin käytetään skriptejä. Aliaksen teko on periaatteessa hyvinkin helppoa. Tiedät minkä komennon haluat lyhentää, avaat yhden tiedoston, laitat sen sinne haluamasi aliaksen yhteyteen ja homma on sillä selvä. Tai ei. Minulla ei nimittäin aliakset toimineet. Vastaan tuli taas kerran ohjeiden yksioikoisuus ja järjestemien monimuotoisuus.
Ensimmäinen alias, jonka kanssa tuli riitaa, oli WP-CLI:n kommennot, joita ei haluta ajaa root-tunnuksella. Jos niin tekee, niin pitäisi laittaa jokaisen wp-komennon yhteyteen (niitä voi olla lausekkeessa useampi) lippu --allow-root
. Ihan pahuksen ärsyttävää. Googlettamalla löytyi ohjeita miten tehdään alias, jossa wp-komennon mukana tuo kulkee.
Alias ei kuitenkaan sovi mihinkään, jossa täytyy asettaa muuttujia. Voit siis tehdä aliaksen komennolle, joka synkkaa tietokannan tuotannosta kehitysversioon aina samassa järjestelmässä, mutta et pysty tekemään aliasta, joka kysyisi minkä sivuston tietokanta siirrettäisiin mihin kehitysversioon.
Aliaksen syntaksihan on helppo. Alias ja perään haluttu termi ja sitten hipsujen väliin määritellään mitä sen pitäisi tehdä. Tässä komento wp
tarkoittaakin aidosti wp --allow-root
eli enää ei tarvitse lisätä tuota ärsyttävää lippua joka hemmetin wp-komentoon:
alias wp='wp --allow-root'
Tai kun haluan palata hakemistossa pykälän taaksepäin, niin käytän mieluummin komentoa cd..
koska se minulle helpompi kuin cd ..
alias cd..='cd ..'
Mutta se, että mihin moinen laitetaan, olikin monimutkaisempaa.
TL;DR
Avaa oman käyttäjäsi .bashrc
nano ~/.bashrc
Lisää alias. Esimerkki tarkistaa komennolla v-ok
Varnishin default.vcl
-tiedoston oikeellisuuden.
alias v-ok='varnishd -C -f /etc/varnish/default.vcl'
Kirjaudu ulos shellistä ja takaisin sisään.
.bashrc ja .bash_profile
Osa ohjeista käski laittaa aliaksen ~/.bashrc
-tiedostoon, osa ~/.bash_profile
-tiedostoon ja osa tarjosi jotain kryptistä source-komentoa, josta ymmärsin vielä vähemmän. Mikään ei toiminut. Olin jo varma, että joku päivitys oli estänyt wp --allow-root
laittamisen aliakseksi.
Pikku hyppy perusteisiin. Ilmaisu ~/
tarkoittaa käyttäjän kotihakemistoa. Ubuntussa se on root-tunnuksella sama kuin /root
ja muilla /home/tunnus
. Absoluuttiset polut voivat kuitenkin vaihdella järjestelmästä toiseen, mutta jokainen systeemi osaa mennä käyttäjän kotihakemistoon, kun polku annetaan ~/
. Eli samanlainen oikopolku kuin että /
tarkoitaa juurihakemistoa, ./
sitä hakemisto jossa ollaan ja ..
siirtää yhden pykälän alaspäin.
Nuo kaksi tiedostoa ovat sama, mutta eivät kuitenkaan. Ja tässä asia monimutkaistuu.
Minulla oli kaikennäköistä hauskaa tiedostossa ~/.bashrc
ja tiedosto ~/.bash_profile
puuttui kokonaan. Koska aikaisemmin kokeilemani joku source
-komento siirsi wp --allow-root
aliaksen nimenomaan tiedostoon .bashrc
ja siellä oli muitakin aliaksia, niin kokeilin sitä. Ei toiminut. Poistin alias-rivit ja koska yhdessä ohjeessa oli sanottu, että tiedoston .bash_profile
voi huoletta tehdä, niin tein ja kokeilin – ei toiminut.
Tein muutaman virheen.
Sama ja ei kuitenkaan
.bashrc
ja .bash_profile
voivat ja pitävät samanlaisia asioita sisällään. Niillä on käyttöero, joka on minulle hyvin epäselvä.
.bash_profile
pitää sisällään asiat, jotka tehdään kun kyseessä kirjautumista vaativa asia, on jonkilainen login. Eli kun käynnistetään terminaali, SSH, PuTTY tai misi sitä haluat kutsuakaan, niin joka kerta tavalla tai toisella halutaan kirjautumistiedot.
.bashrc
pitää sisällään asiat, jotka tehdään kun kirjautumista ei tarvita. Tietokoneissa tuo ero on selvä. Jos olet asentanut jonkun linuxin omalle koneellesi ja käynnistät terminaalin, niin kirjautumista ei tarvita ja .bashrc
tulee kuvioihin mukaan. Omissa töissäni shellissä minulta kysytään aina kirjautumistiedot, joten .bashrc
ei olisi koskaan käynnissä – paitsi ilmeisesti yhdessä tilanteessa: kun annetaan su
-komento.
sudo
antaa kohteen oikeudet, mutta varmistetaan antajan salasanalla (antajan.bash_profile
)su
kysyy kohteen salasanan, mutta käyttää antajan ympäristöasetuksia (antajan.bashrc
)su -
kysyy kohteen salasanaa ja tekee uuden shell-istunnon, jossa on kohteen ympäristöasetukset (kohteen.bash_profile
)
Suhtaudu listaan hyvinkin skeptisesti. En todellakaan varmuudella tiedä mitä selitän, kunhan pähkäilen.
Kumpaan alias lisätään
Yhden ohjeen mukaan
- henkilökohtaiset aina
.bash_profile
- yleiset
.bashrc
- aliakset aina
.bash_profile
(tai voidaan tehdä erillinen.bash_aliases
)
Ja taas tipahdin vauhdista. Mitkä yleiset, kun molemmat tiedostot ovat henkilökohtaisia? Jos haluan, että vaikka jokin alias olisi kaikilla tunnuksilla käytössä, niin alkaisin etsimään jotain aidosti yleistä bash_profile
tai bashrc
-tiedostoa /etc
-hakemistosta.
Kokeilin.
- Laitoin aliakset
~/.bashrc
-tiedostoon, kirjauduin ulos ja sisään, ja testasin: nada. Ei toimi. - Siirsin samat aliakset
~/.bash_profile
-tiedostoon, samat kevätjuhlaliikkeet kirjautumisen suhteen ja testi: nyt toimi.
Tähän voisi tyytyä, sillä systeemi toimii. Jos tuo riittää sinulle, niin muista laittaa seuraava rivi ~/.bash_profile
tiedostoon, jos käytät WP-CLI:tä:
export PATH=/root/.wp-cli/bin:$PATH
Omat kokeilut
Itse en tyytynyt, koska tiedän, että minulla toimi hetken aikaa wp-alias. Sitten se vaan lakkasi toimimasta. Samaan aikaan minulla lakkasi toimimasta pari muutakin aliasta, jotka taatusti ennen toimivat kuin junan vessa. Halusin tietää miksi.
Googlen mukaan Ubuntu naittaa jollain tavalla molemmat .bashrc
ja .bash_profile
yhteen, vaikka niillä onkin suoritusjärjestys. Se voidaan tehdä komentamallakin. Näytti kuitenkin vakaasti siltä, että .bash_profile
toimi ja .bashrc
ei – siis minulle, en minä mitään ymmärrä jostain non-logging interaktiivisista shelleistä. Moisissa saattoi toimiakin, en minä tiedä.
Joten siirsin alias-rivit takaisin ~/.bashrc
-tiedostoon ja poistin ~/.bash_profile
-tiedoston. Kirjautumiskuviot ja testi: aliakset toimivat.
Se, että jossain vaiheessa toimi ja jossain vaiheessa ei, eli ne alussa mainitsemani virheet, olivat:
- en ollut kirjautunut ulos/sisään muutosten jälkeen
- olin omalla tunnuksellani kirjautuneena, muokkasin rootin
.bash_profile
tiedostoa ja kokeilin toimintaasudo
-komennolla .bashrc
lakkaa toimimasta, jos.bash_profile
on olemassa
Homma oli sillä selvä, ainakin minulle. Löysin syyt miksi asiat eivät toimineen ja tein ratkaisun. Se, että oliko ratkaisu oikea, selviää varmaan ajan myötä. Nyt ja tässä se on toimiva ratkaisu.
Poistin tiedoston ~/.bash_profile
ja alon käyttämään vain ~/bashrc
. Syitä on kaksi:
- systeemissä ei ollut oletuksena alunperinkään tiedostoa
.bash_profile
- on helpompaa muista vain yksi muokattava paikka
Mutta. Aina se mutta.
Lopullinen ratkaisu
Otsikolla on paha kaiku yleisessä puheessa. Ja IT-hommissakaan harvempi asia on lopullinen, ellei sellaiseksi lasketa muruiksi jyrättyä kovalevyä. Lopullinen tarkoittaa sitä, että tein tämän ja lopetin asian penkomisen.
Minua nimittäin vaivasi kuitenkin edelleen se, että jokin sellainen asia, jota en ymmärrä, tekee tai osallistuu sellaiseen, jota en tajua. Jossain vaiheessa ymmärrän ja tajuan, mutta sitä ennen se jokin ei kuitenkaan ole sillä missä pitäisi. Plus minulta puuttui nyt WP CLI:n mahdollisesti kaipaama polku – joka ei kylläkään ollut haitannut käyttöä.
Avataan uudestaan ~/.bash_profile
nano ~/.bash_profile
Lisää tämä tiedoston alkuun, jos sinulla on käytössä WP CLI:
export PATH=/root/.wp-cli/bin:$PATH
Laita tämä tiedoston loppuun (en minä oikeasti tiedä onko paikalla väliä):
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
Kirjaudu ulos ja takaisin sisään. Nyt aliaksetkin toimii, vaikka ne olisivat .bashrc
-tiedostossa JA on olemassa .bash_profile
.
Bash ja alias-esimerkkejä
Kaikki aliakset toimivat vain sillä tunnuksella, jonka kotihakemiston .bashrc
-tiedostoon ne on lisätty. Joten aliakset joutuu erikseen lisäämään kaikkiin, koska ne ovat eräällä tavalla henkilökohtaisia. Minulla esimerkiksi on oikopolut jokaiseen web-kotihakemistoon henkilöni tunnukselle, mutta root saa pari aliasta lisää, joista yksi on wp --allow-root
.
Avaa sen tunnuksen .bashrc
, jolla olet kirjautuneena:
nano ~/.bashrc
Lisää johonkin haluamasi aliakset, itse laitan ne sellaiseen paikkaan, jossa niitä oli jo aikaisemmin. Jos käytät aliaksena sellaista komentoa tai lippua, joka on jo olemassa, niin saat aikaiseksi mielenkiintoisia efektejä…
alias wp='wp --allow-root' alias saitti='cd /var/www/html' alias cd..='cd ..' alias vd='cd'
Ja sitten kun unohdat mitä aliaksia on käytössä, niin aika simppeli komento auttaa:
alias