Prøver å forstå dette stykke koden:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Jeg er ikke sikker hva -f betyr nøyaktig.
Svar
Den aktuelle man-siden for å sjekke om dette er selve skallet, bash
, fordi -f
er funksjonalitet som skallet gir, det er en innebygd bash.
På systemet mitt (CentOS 7), den fine mansiden dekker den. grep
gir kanskje ikke de samme resultatene på andre distribusjoner. Likevel, hvis du kjører man bash
og deretter søker etter «-f», bør det gi de resultatene du trenger.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Svar
Kort sagt, koden vil kilden /etc/bashrc
filen hvis den eksisterer, og eksistensen er bekreftet av [
kommando som -f
er en operator / parameter.
if...then...else...fi
uttalelse i skallskripting evaluerer utgangsstatus for kommandoer – 0 etter suksess. Så det er riktig å gjøre noe sånt som dette:
if ping -c 4 google.com; then echo "We have a connection!" fi
Kommandoen er i ditt tilfelle [
som også er kjent som test
kommando. Så det ville være helt gyldig å gjøre
if test -f /etc/bashrc; then . /etc/bashrc fi
-f flagg bekrefter to ting: den angitte banen eksisterer og er en vanlig fil. Hvis /etc/bashrc
faktisk er en katalog eller mangler, bør testen returnere ikke-nullutgangsstatus til signalfeil
Denne kommandoen var opprinnelig en egen kommando, det er ikke del av skallets innebygde kommandoer. I dag har de fleste Bourne-lignende skjell det som innebygd, og det er det skallet vil bruke.
På en sidenotat virker /etc/bashrc
som unødvendig ekstra fil som administratoren din eller den opprinnelige forfatteren av kodebiten bruker. Det eksisterer /etc/bash.bashrc
, som er ment som en systemomfattende RC-fil for bash, så man kan forvente at den skal brukes.
Se også: