Sto cercando di capire questo pezzo di codice:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
“Non ne sono sicuro cosa significa esattamente -f.
Risposta
La pagina di manuale pertinente da controllare è quella della shell stessa, bash
, poiché -f
è la funzionalità fornita dalla shell, “è una bash integrata.
Sul mio sistema (CentOS 7), la bella pagina man lo copre. grep
potrebbe non dare gli stessi risultati su altre distribuzioni. Tuttavia, se esegui man bash
e poi cerchi “-f” dovrebbe fornire i risultati desiderati.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Answer
In breve, il pezzo di codice darà origine al file /etc/bashrc
se esiste, e il lesistenza è verificata dal [
comando di cui -f
è un operatore / parametro.
nello script di shell valuta lo stato di uscita dei comandi – 0 in caso di successo. Quindi è corretto fare qualcosa del genere:
if ping -c 4 google.com; then echo "We have a connection!" fi
Il comando, nel tuo caso, è [
che è anche noto come comando test
. Quindi “sarebbe perfettamente valido
if test -f /etc/bashrc; then . /etc/bashrc fi
Il -f flag verifica due cose: il percorso fornito esiste ed è un file normale. Se /etc/bashrc
è in realtà una directory o manca, test dovrebbe restituire uno stato di uscita diverso da zero per segnalare un errore
Questo comando originariamente era un comando separato, che non lo è parte dei comandi incorporati della shell. Oggigiorno, la maggior parte delle shell tipo Bourne lo hanno come integrato, e questo è ciò che la shell userà.
In una nota a margine, il /etc/bashrc
sembra un file extra non necessario che sta utilizzando lamministratore o lautore originale dello snippet di codice. Esiste /etc/bash.bashrc
, che è inteso come file rc a livello di sistema per bash, quindi ci si aspetterebbe che venga utilizzato.
Vedi anche: