Forsøger at forstå dette stykke kode:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Jeg er ikke sikker hvad -f betyder nøjagtigt.
Svar
Den relevante mandeside, der skal kontrolleres for dette, er selve skallen, bash
, fordi -f
er funktionalitet, som skallen giver, det er en indbygget bash.
På mit system (CentOS 7), den fine mandside dækker det. grep
giver muligvis ikke de samme resultater på andre distributioner. Ikke desto mindre, hvis du kører man bash
og derefter søger efter “-f”, skal det give de ønskede resultater.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Svar
Kort sagt, koden vil kilden til /etc/bashrc
fil, hvis den findes, og eksistens er verificeret med [
kommando, som -f
er en operator / parameter.
if...then...else...fi
erklæring i shell-scripting evaluerer kommandos udgangsstatus – 0 efter succes. Så det er korrekt at gøre noget som dette:
if ping -c 4 google.com; then echo "We have a connection!" fi
Kommandoen er i dit tilfælde [
som også er kendt som test
kommando. Så det ville være perfekt gyldigt at gøre
if test -f /etc/bashrc; then . /etc/bashrc fi
-f flag verificerer to ting: den angivne sti findes og er en almindelig fil. Hvis /etc/bashrc
faktisk er en mappe eller mangler, skal testen returnere status for ikke-nul udgang til signalfejl
Denne kommando var oprindeligt en separat kommando, det er ikke del af shell “s indbyggede kommandoer. I dag har de fleste Bourne-lignende skaller det som indbygget, og det er, hvad shell skal bruge.
På en sidebemærkning virker /etc/bashrc
som unødvendig ekstra fil, som din administrator eller den originale forfatter af kodestykket bruger. Der findes /etc/bash.bashrc
, som er beregnet som en system-bred rc-fil til bash, så man forventer, at den skal bruges.
Se også: