Turpinot piezīmju sēriju par bash, es jums parādīšu septiņas mainīgās, par kurām jūs, iespējams, nezināt.
1) PROMPT_COMMAND
Iespējams, jūs jau zināt, kā manipulēt ar aicinājumu prompt, lai rādītu dažādu noderīgu informāciju, bet ne visi zina, ka katru reizi, kad tiek parādīts aicinājums, var izsaukt komandu.
Patiesībā daudzi sarežģīti aicinājuma manipulatori izmanto šo mainīgo, lai veiktu komandas informācijas vākšanai, kas tiek parādīta aicinājumā.
Mēģiniet to izpildīt jaunā shelā un redzēsiet, kas notiks ar sesiju:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'2) HISTTIMEFORMAT
Ja izpilda history konsole, jūs saņemsiet iepriekš veikto komandu sarakstu, kas pieder pie jūsu konta.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T 'Kad šis mainīgais ir iestatīts, jaunas ierakstas reģistrē laiku kopā ar komandu, tāpēc rezultāts izskatīsies šādi:
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 -
Formatējums atbilst simboliem no man date.
3) CDPATH
Lai ietaupītu laiku komandrindā, varat izmantot šo mainīgo, lai pārvietotos pa direktorijām tikpat viegli, kā izsaukt komandas.
Kā arī PATH, mainīgais CDPATH ir ceļu saraksts, kas atdalīts ar kolonnu. Kad jūs izsaucat komandu cd ar relatīvo ceļu (tas ir, bez slīpsvītras priekšā), noklusējuma shell meklē jūsu lokālajā mapē atbilstošos nosaukumus. CDPATH meklēs norādītajos ceļos, uz kuru vēlaties pāriet.
Ja iestādāt CDPATH šādā veidā:
$ CDPATH=/:/libun pēc tam ievadāt:
$ cd /home
$ cd tmp tad jūs vienmēr nonāksiet /tmp neatkarīgi no tā, kur atrodaties.
Tomēr esiet uzmanīgi, jo, ja nesniegsiet lokālo (.) mapi sarakstā, tad jūs nevarēsiet izveidot nevienu citu mapi tmp un pāriet uz to kā parasti:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmpUps!
Tas liecina par apjukumu, ko es izjutu, kad sapratu, ka lokālā mape nav iekļauta pazīstamajā mainīgajā PATH…bet jums jāizdara tas mainīgajā PATH, jo varat kļūdīties, izpildot viltotu komandu no kāda lejupielādēta koda.
Mana iestatāma sākumpunkts:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt4) SHLVL
Vai jūs kādreiz esat domājuši, ievadot exit izvadīs jūs no pašreizējā bash čaulas uz citu "vecāku" čaulu vai vienkārši pilnībā aizvērs konsoles logu?
Šī mainīgā vērtība uzrauga, cik dziļi jūs esat iekļauts bash čaulā. Ja izveidosiet jaunu termināli, tā būs iestatīta uz 1:
$ echo $SHLVL
1Pēc tam, ja palaižat citu čaulas procesu, skaitlis palielinās:
$ bash
$ echo $SHLVL
2Tas var būt ļoti noderīgi skriptos, kur jūs neesat pārliecināts, vai iziet vai ne, vai uzraudzīt, kur jūs atrodaties dziļumā.
5) LINENO
Tāpat arī pašreizējā stāvokļa analīzei un atkļūdošanai noderīga ir mainīgā LINENO, kas norāda, cik komandas tika izpildītas sesijā līdz šim:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2 Tas visbiežāk tiek izmantots, veicot skriptu atkļūdošanu. Ievietojot tādas rindas kā echo DEBUG:$LINENO, jūs varat ātri noteikt, kur skriptā jūs atrodaties (vai ne).
6) REPLY
Ja, tāpat kā es, jūs parasti rakstāt šādu kodu:
$ read input
echo dari kaut ko ar $inputtad var būt pārsteigums, ka nav vispār jāuztraucas par mainīgā izveidi:
$ read
echo dari kaut ko ar $REPLYTas dara to pašu.
7) TMOUT
Lai nepavadītu pārāk ilgi produkcijas serveros drošības nolūkos vai nejauši nenoslogotu kaut ko bīstamu nepareizajā terminālī, šī mainīgā iestatīšana darbojas kā aizsardzība.
Ja netiek ievadīts nekas noteiktu sekunžu laikā, notiek iziešana no čaulas.
Tātad tas ir alternatīva sleep 1 && exit:
$ TMOUT=1Avots: habr.com
