Ustekabeko zazpi Bash aldagai

buruzko ohar sorta jarraituz ezezagunagoa funtzioak bash, agian ezagutzen ez dituzun zazpi aldagai erakutsiko dizkizut.

1) PROMPT_COMMAND

Dagoeneko jakin dezakezu gonbita manipulatzen hainbat informazio erabilgarria erakusteko, baina denek ez dakite shell komando bat exekutatu dezakezula gonbita erakusten den bakoitzean.

Izan ere, gonbita-manipulatzaile konplexu askok aldagai hau erabiltzen dute gonbidapenean bistaratzen den informazioa biltzeko komandoak exekutatzeko.

Saiatu hau shell berri batean exekutatzen eta ikusi zer gertatzen den saioan:

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

2) HISTTIMEFORMAT

Korrika eginez gero history kontsolan, aurretik exekutaturiko komandoen zerrenda jasoko duzu zure kontuarekin.

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

Aldagai hau ezarri ondoren, sarrera berriek denbora grabatzen dute komandoarekin batera, beraz, irteera honela izango da:

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

Formateatzea karaktereekin bat dator man date.

3) CDPATH

Komando-lerroko denbora aurrezteko, aldagai hau erabil dezakezu direktorioak aldatzeko komandoak ematen dituzun bezain erraz.

As PATH, aldakorra CDPATH bi puntuz bereizitako bideen zerrenda da. Komandoa exekutatzen duzunean cd bide erlatibo batekin (hau da, hasierako barrarik gabe), lehenespenez shell-ak zure karpeta lokalean bilatzen du bat datozen izenak. CDPATH zuk emandako bideetan bilatuko du joan nahi duzun direktorioa.

Instalatzen baduzu CDPATH bide honetatik:

$ CDPATH=/:/lib

eta gero sartu:

$ cd /home
$ cd tmp

orduan beti amaituko duzu /tmp edozein lekutan zaudela ere.

Hala ere, kontuz ibili, zeren zerrendan tokikoa ez baduzu zehazten (.) karpeta, orduan ezin izango duzu beste karpetarik sortu tmp eta joan ohi bezala:

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

Aupa!

Tokiko karpeta aldagai ezagunean sartuta ez zegoela konturatu nintzenean sentitu nuen nahasmenaren antzekoa da PATH... baina zure PATH aldagaian egin behar duzu, deskargatutako kode batetik komando faltsu bat exekutatzen engainatu zintezkeelako.

Nirea abiapuntuak ezartzen du:

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

4) SHLVL

Inoiz galdetu duzu, idazten exit Zure egungo bash shell-etik beste "guraso" shell batera eramango zaitu, edo kontsolaren leihoa guztiz itxiko al du?

Aldagai honek bash shell-en habiaratuta zaudenaren jarraipena egiten du. Terminal berri bat sortzen baduzu, 1ean ezarriko da:

$ echo $SHLVL
1

Ondoren, beste shell-prozesu bat hasten baduzu, kopurua handitzen da:

$ bash
$ echo $SHLVL
2

Hau oso erabilgarria izan daiteke irten ala ez ziur ez zauden scriptetan, edo habiaratzen zaren lekuaren jarraipena egin.

5) LINENO

Aldagaia uneko egoera aztertzeko eta arazketarako ere erabilgarria da LINENO, orain arte saioan exekutatu diren komando kopuruaren berri ematen duena:

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

Hau gehienetan erabiltzen da scriptak arazketan. bezalako lerroak txertatzen echo DEBUG:$LINENO, azkar zehaztu dezakezu non zauden gidoian (edo ez).

6) REPLY

Nik bezala, normalean honelako kodea idazten baduzu:

$ read input
echo do something with $input

Harrigarria izan daiteke aldagaia sortzeaz batere kezkatu beharrik ez izatea:

$ read
echo do something with $REPLY

Honek gauza bera egiten du.

7) TMOUT

Segurtasun-arrazoiengatik ekoizpen-zerbitzarietan denbora gehiegi egon ez dadin edo okerreko terminalean zerbait arriskutsua exekutatzen ez dadin, aldagai hau ezartzeak babes gisa funtzionatzen du.

Segundu kopuru jakin batean ezer sartzen ez bada, shell-a irtengo da.

Hau da, hau alternatiba bat da sleep 1 && exit:

$ TMOUT=1

Iturria: www.habr.com

Gehitu iruzkin berria