Seitsme ootamatu Bash'i muutuja.

Jätkates märkmete seeriat vähem tuntud funktsioonidest bash, tutvustan teile seitset muutujat, millest te võisite mitte teada.

1) PROMPT_COMMAND

Võib-olla olete juba kursis, kuidas käsurea kutses näidata erinevat kasulikku teavet, kuid mitte kõik ei tea, et iga kord, kui kutset kuvatakse, saab käivitada shelli käsu.

Tõepoolest, paljud keerukad kutse manipulaatorid kasutavad seda muutujat, et käivitada käske teabe kogumiseks, mis kuvatakse kutse all.

Proovige seda uues shellis käivitada ja näete, mis sessiooniga juhtub:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Kui käivitada history konsoolis, saate loetelu käskudest, mis on varem teie kasutajakonto all täidetud.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Kui see muutuja on seadistatud, salvestatakse uued kirjed koos ajaga, nii et väljund näeb välja järgmine:

1871  I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf
1872  I ran this at: 01/05/19 13:38:19 curl bbc.co.uk
1873  I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf
1874  I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk
1876  I ran this at: 01/05/19 13:39:25 sudo su -

Formaat vastab sümbolitele, mis on saadaval man date.

3) CDPATH

Käsureas aega säästmiseks võite kasutada seda muutuja, et katalooge muuta sama lihtsalt nagu käskude käivitamine.

Nagu ka PATH, muutuja CDPATH esindab kolmandate teede loetelu, mis on eraldatud koolonitega. Kui käivitate käsu cd suhtelise teega (st ilma kaldkriipsuta alguses), otsib shell vaikimisi sobivaid nimesid teie kohalikust kaustast. CDPATH otsib teed, mille olete määranud kaustaks, kuhu soovite minna.

Kui seadistate CDPATH nii:

$ CDPATH=/:/lib

ja seejärel sisestate:

$ cd /home
$ cd tmp

siis jõuate alati /tmp sõltumata sellest, kus te olete.

Kuid olge ettevaatlik, sest kui te ei määratle kohaliku (.) kausta nimekirjas, siis ei saa te luua ühtegi teist kausta tmp ja minna sellele nagu tavaliselt:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

Ups!

See tundub segadusena, mida tundsin, kui mõistsin, et kohaliku kausta ei olnud rohkem tuntud muutuja PATH… aga peate seda tegema PATH muutuja puhul, sest võidakse petta, käivitades vale käsu mingist allalaaditud koodist.

Minu seab alguspunktiks:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

Kas olete kunagi mõelnud, et exit viib teid praegusest bash-keskkonnast teise "vanema" keskkonda või lihtsalt sulgeb konsooli akna täielikult?

See muutuja jälgib, kui sügavale olete bash-keskkonnas süvenenud. Uue terminali loomisel on see seadistatud väärtusele 1:

$ echo $SHLVL
1

Seejärel, kui käivitada teine shell-protsess, suureneb number:

$ bash
$ echo $SHLVL
2

See võib olla väga kasulik skriptides, kus te pole kindel, kas peaksite väljuma või mitte, või jälgida, kus te süvenemise kaudu viibite.

5) LINENO

Sama kehtib ka praeguse oleku analüüsimiseks ja tõrkeotsinguks, kasulik on muutuja LINENO, mis näitab, mitu käsku on seansi jooksul seni täidetud:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Seda kasutatakse kõige sagedamini skriptide tõrkeotsinguks. Selliste ridade lisamine nagu echo DEBUG:$LINENO, saate kiiresti kindlaks teha, kus skriptis viibite (või ei ole).

6) REPLY

Kui te, nagu mina, kirjutate tavaliselt sellist koodi:

$ read input
echo do something with $input

siis võib üllatuseks olla, et muutuja loomise pärast ei pea üldse muretsema:

$ read
echo do something with $REPLY

See teeb sama asja.

7) TMOUT

Ettevõtte serverites liiga kaua viibimise vältimiseks turvalisuse huvides või juhuslikult ohtlikku terminali midagi käivitades toimib selle muutuja seadmine kaitsemehhanismina.

Kui mingit sisendit ei tehtud kindlaksmääratud sekundi jooksul, toimub väljalogimine.

See on alternatiiv sleep 1 && exit:

$ TMOUT=1

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster