Sette variabili Bash inaspettate

Continuando la serie di appunti su meno conosciuti funzioni bash, vi mostrerò sette variabili di cui potreste non essere a conoscenza.

1) PROMPT_COMMAND

È probabile che sappiate già come maneggiare il prompt per mostrare varie informazioni utili, ma non tutti sanno che ogni volta che viene mostrato il prompt si può eseguire un comando della shell.

Infatti, molti complessi manipolatori di prompt utilizzano questa variabile per eseguire comandi che raccolgono informazioni da visualizzare nel prompt.

Provate a eseguire questo in una nuova shell e vedrete cosa succede alla sessione:

$ PROMPT_COMMAND='echo -n "scrivendo il prompt a " && date'

2) HISTTIMEFORMAT

Se si esegue la cronologia nella console, otterrete un elenco dei comandi precedentemente eseguiti con il vostro account.

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

Una volta impostata questa variabile, i nuovi registri scrivono l'ora insieme al comando, quindi l'output apparirà così:

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 -

La formattazione corrisponde ai simboli di man date.

3) CDPATH

Per risparmiare tempo nella riga di comando, puoi usare questa variabile per cambiare directory tanto facilmente quanto invochi comandi.

Come PATH, la variabile CDPATH è un elenco di percorsi separati da due punti. Quando esegui un comando cd con un percorso relativo (ossia senza barra all'inizio), di default la shell cerca nella tua cartella locale nomi corrispondenti. CDPATH cercerà nei percorsi che hai fornito per la directory in cui desideri andare.

Se imposti CDPATH in questo modo:

$ CDPATH=/:/lib

e poi inserisci:

$ cd /home
$ cd tmp

sarai sempre indirizzato a /tmp indipendentemente da dove ti trovi.

Ma fai attenzione, perché se non specifichi nella lista la cartella locale (.) non potrai creare qualsiasi altra cartella tmp e accedervi come al solito:

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

Ops!

Questo sembra il malinteso che ho provato quando ho capito che la cartella locale non era stata inclusa nella variabile più familiare PATH… ma dovresti farlo nella variabile PATH, perché potresti essere ingannato ad eseguire un comando falso da qualche codice scaricato.

Il mio viene impostato come punto iniziale:

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

4) SHLVL

Ti sei mai chiesto, inserendo exit ti porterà fuori dall'attuale shell bash in un'altra shell "padre" oppure semplicemente chiuderà completamente la finestra del terminale?

Questa variabile tiene traccia di quanto profondamente sei immerso nella shell bash. Se crei un nuovo terminale, è impostata su 1:

$ echo $SHLVL
1

Poi, se avvii un altro processo della shell, il numero aumenta:

$ bash
$ echo $SHLVL
2

Questo può essere molto utile negli script, dove non sei sicuro se uscire o meno, o per tenere traccia di dove ti trovi in termini di nidificazione.

5) LINENO

Anche per analizzare lo stato attuale e per il debug, la variabile LINENO, che riporta il numero di comandi eseguiti nella sessione fino a questo momento:

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

Questo è utilizzato più frequentemente durante il debug degli script. Inserendo righe come echo DEBUG:$LINENO, puoi rapidamente determinare dove ti trovi nello script (o meno).

6) REPLY

Se, come me, di solito scrivi codice del genere:

$ read input
echo fai qualcosa con $input

può essere una sorpresa che non devi preoccuparti affatto di creare una variabile:

$ read
echo fai qualcosa con $REPLY

Questo fa la stessa cosa.

7) TMOUT

Per non rimanere sui server di produzione troppo a lungo per motivi di sicurezza o per non avviare accidentalmente qualcosa di pericoloso nel terminale sbagliato, impostare questa variabile funge da protezione.

Se non viene inserito nulla per il numero stabilito di secondi, si esce dalla shell.

Cioè, è un'alternativa a sleep 1 && exit:

$ TMOUT=1

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster