source is een handig ingebouwd shell-commando dat argumenten accepteert, commando's in een script ontleedt en uitvoert in de shell-omgeving. De inhoud van het bestand wordt per bron gelezen en vervolgens doorgegeven aan de Tool Command Language (TCL)-interpreter, die de opdrachten uitvoert.
Laten we leren hoe we source kunnen gebruiken om commando's uit te voeren en te werken met shell-omgevingen op Linux, samen met een korte uitleg over hoe het verschilt van het bash-commando.
Gebruik source om opdrachten in een bestand uit te voeren
Om het source-commando te gebruiken, moet u eerst een voorbeeldbestand maken en dit vullen met enkele shell-commando's. Begin met het maken van een nieuw bestand met het aanraakcommando. Open het bestand in een teksteditor naar keuze en schrijf een paar eenvoudige shell-commando's.
aanrakentest.tekst
vitest.tekst# Schrijf de commando's in het tekstbestand:
echo "Hallo!"
pwd
ls
# Bron het bestand met de bron- of puntsyntaxis
. test.tekst
brontekst.tekst
Schrijf het tekstbestand uit en geef het door als een argument aan het broncommando. Het systeem voert de opdrachten in het bestand uit en retourneert een uitvoer.
Nu u de basis kent van het gebruik van de broncode, gaan we proberen de Bash-shellomgeving te wijzigen. Voordat u echter verder gaat, moet u een fundamenteel begrip hebben van omgevingsvariabelen in Linux.
Gebruik de bronopdracht om de Bash Shell-omgeving bij te werken
Op Linux zijn omgevingsvariabelen geërfd maar onveranderlijk. Als u een Bash-shellscript uitvoert dat een omgevingsvariabele $TEST wijzigt, zal het script een nieuwe, gevorkte shell-proces, en wijziging van $TEST zal daarin plaatsvinden in plaats van de originele Bash omgeving.
Het kindproces kan de omgeving van het ouderproces niet wijzigen. Het kan alleen zijn eigen omgeving wijzigen. Laten we dit begrijpen met een praktisch voorbeeld:
exporteer TEST="deb"
vi voorbeeld# Typ deze commando's in het bestand
exporteer TEST="bed"
echo $TEST
# Schrijf het bestand uit, maak het uitvoerbaar en voer het vervolgens uit
chmod +x voorbeeld
./voorbeeld # dit geeft "bed" terug
echo $TEST # dit zal "deb" teruggeven
Hier komt het broncommando om de hoek kijken. Met het source-commando kun je een script in dezelfde shell-omgeving uitvoeren, dat anders gevorkt zou zijn. Dus als u een script gebruikt dat omgevingsvariabelen wijzigt, zal het de wijzigingen aanbrengen voor de Bash-shellomgeving.
Om het uit te testen, schrijft u de commando's in het bovenstaande codevak in een nieuw bestand en gebruikt u het source-commando in plaats van het uitvoerbaar te maken.
# Maak een nieuw bestand aan en bewerk het
vi test bestand
. test_bestand
echo $TEST # Dit zal "bed" retourneren
Zoals u kunt zien, kon u met behulp van de source-opdracht de omgevingsvariabelen van het bovenliggende proces bijwerken. Dit is het primaire gebruiksscenario van het broncommando, d.w.z. om de bovenliggende omgeving te wijzigen.
Dat zijn alle stappen die u nodig hebt om de Bash-shellomgeving bij te werken met de opdracht source.
Verschil tussen de Linux bash- en bronopdrachten
Het verschil tussen Linux bash- en source-commando's is dat wanneer je een script uitvoert met het bash-commando, dit de Linux vertelt kernel om een nieuw Bash-proces te maken om het script te lezen en uit te voeren, kopieer de uitvoer naar het originele shell-proces en geef het weer.
Maar het broncommando is een schelp ingebouwd dat een bestand leest en evalueert binnen het huidige shell-proces. Alle wijzigingen die door het script zijn aangebracht, blijven dus behouden in de Bash-shell.
Problemen met de bronopdrachtfouten oplossen
Op sommige Linux-systemen kunt u de foutmelding "bron niet gevonden" tegenkomen wanneer u de bronopdracht probeert te gebruiken. U kunt deze fout op twee manieren oplossen:
1. Verander de schaal
Sommige shells ondersteunen het source-commando niet. In dat geval moet u uw shell-omgeving wijzigen met de chsh -s ($welke shell_name) commando.
Start daarna een nieuwe terminal op je schelp veranderen, en probeer de opdracht source te gebruiken. Als de nieuwe shell sourcing ondersteunt, zou het probleemloos moeten werken.
2. Gebruik de punt/punt-syntaxis
Sommige shell-omgevingen ondersteunen "bron" syntaxis maar het alternatief "." syntaxis. De "bron"-syntaxis is een synoniem voor punt in Bash. Maar dit werkt niet in de POSIX-shell, dus gebruik voor maximale compatibiliteit de puntsyntaxis.
Basis Linux-opdrachten die u moet kennen
Linux-shell-commando's zijn een geweldige manier om met het systeem te communiceren via de terminal. Ze vormen de essentie van het gebruik van *NIX-systemen.
Hoewel je niet alle commando's hoeft te kennen, zal het zeker nuttig blijken om bekend te zijn met een paar nuttige commando's als je je diep in de wereld van Linux waagt.