Försöker förstå denna kod:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Jag är inte säker vad -f betyder exakt.
Svar
Den relevanta mansidan som ska kontrolleras är den för själva skalet, bash
, eftersom -f
är funktionalitet som skalet ger, det är en inbyggd bash.
På mitt system (CentOS 7), den fina mansidan täcker den. grep
kanske inte ger samma resultat för andra distributioner. Ändå, om du kör man bash
och sedan söker efter ”-f” bör det ge de resultat du behöver.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Svar
Kort sagt, koden kommer att källa till /etc/bashrc
-fil om den finns, och existensen verifieras av [
kommando som -f
är en operatör / parameter.
if...then...else...fi
uttalande i shell-skript utvärderar utgångsstatus för kommandon – 0 efter framgång. Så det är rätt att göra något så här:
if ping -c 4 google.com; then echo "We have a connection!" fi
Kommandot är i ditt fall [
vilket också kallas test
-kommando. Så det skulle vara helt giltigt att göra
if test -f /etc/bashrc; then . /etc/bashrc fi
-f flagg verifierar två saker: den angivna sökvägen finns och är en vanlig fil. Om /etc/bashrc
faktiskt är en katalog eller saknas, ska testet returnera icke-nollutgångsstatus till signalfel
Detta kommando var ursprungligen ett separat kommando, det är inte del av skalets inbyggda kommandon. Numera har de flesta Bourne-liknande skalen det som inbyggt, och det är vad skalet kommer att använda.
På en sidoteckning verkar /etc/bashrc
som onödig extra fil som din administratör eller originalförfattare av kodavsnittet använder. Det finns /etc/bash.bashrc
, som är tänkt som en systemomfattande RC-fil för bash, så man kan förvänta sig att den ska användas.
Se även: