Ik probeer dit stuk code te begrijpen:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Ik weet het niet zeker wat de -f precies betekent.
Answer
De relevante manpage om dit te controleren is die van de shell zelf, bash
, omdat -f
functionaliteit is die de shell biedt, is het een ingebouwde bash.
Op mijn systeem (CentOS 7), de fijne man-pagina behandelt het. De grep
geeft mogelijk niet dezelfde resultaten op andere distributies. Als u echter man bash
uitvoert en vervolgens naar “-f” zoekt, zou dit de gewenste resultaten moeten opleveren.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Answer
In het kort, het stuk code zal een /etc/bashrc
-bestand als broncode hebben als het bestaat, en het bestaan wordt geverifieerd door het [
commando waarvan -f
een operator / parameter is.
if...then...else...fi
statement in shell scripting evalueert de exit status van commandos – 0 bij succes. Het is dus gepast om zoiets als dit te doen:
if ping -c 4 google.com; then echo "We have a connection!" fi
Het commando is in jouw geval [
die ook bekend staat als test
commando. Dus het “zou volkomen geldig zijn om te doen
if test -f /etc/bashrc; then . /etc/bashrc fi
De -f flag verifieert twee dingen: het opgegeven pad bestaat en is een normaal bestand. Als /etc/bashrc
in feite een map is of ontbreekt, zou test een exitstatus anders dan nul moeten retourneren om een fout aan te geven.
Dit commando was oorspronkelijk een apart commando, dat is niet onderdeel van de ingebouwde commandos van de shell. Tegenwoordig hebben de meeste Bourne-achtige shells het als ingebouwd, en dat is wat de shell zal gebruiken.
Even terzijde, het /etc/bashrc
lijkt een onnodig extra bestand dat uw admin of oorspronkelijke auteur van het codefragment gebruikt. Er bestaat /etc/bash.bashrc
, dat bedoeld is als systeembreed rc-bestand voor bash, dus je zou verwachten dat het wordt gebruikt.
Zie ook: