
Er is meer dan één type van de omgevingsvariabele op Linux. Leren hoe om ze te zien, ze maken voor de lokale en remote logins, en maken ze overleven opnieuw opstarten.
Hoe Omgevingsvariabelen Werk
Wanneer u start een terminal venster en de shell in, een verzameling van variabelen wordt verwezen om te zorgen voor de shell correct is geconfigureerd. Deze variabelen ook voor zorgen dat de informatie waarop het terminal-venster en shell zou moeten verwijzen is beschikbaar. Samen vormen deze variabelen hold-instellingen definiëren van de omgeving die je in je terminal venster, recht naar beneden naar de look van de opdrachtprompt. Ja, natuurlijk, ze zijn bedoeld als omgevingsvariabelen.
De omgevingsvariabelen zijn systeem-breed, of wereldwijd. Anderen zijn sessie-breed en kan alleen gezien worden door je. Anderen kunnen geen verwijzing van uw sessie variabelen van de omgeving. Er is een derde van de omgeving van de variabelen die zijn gedefinieerd binnen de shell. Uw landinstelling, de tijdzone en de instellingen van het toetsenbord, de set van mappen doorzocht wanneer de shell probeert te vinden voor een opdracht, en je standaard editor, worden opgeslagen in het shell environment variabelen.
We gaan je laten zien hoe om de omgeving te zien variabelen die aanwezig zijn op uw systeem, en we zullen beschrijven hoe het maken van uw eigen. We zullen ook zien hoe u om deze beschikbaar te maken naar de onderliggende processen en blijvend na een systeem herstart.
Omgevingen en Erfenis
Wanneer een shell wordt gestart, gaat het door een initialisatie fase. Het is op dit punt dat het aflezen van de milieu-variabelen die kenmerkend zijn voor de omgeving van de shell.
Wanneer een programma of opdracht wordt gestart op in die shell—bekend als een child proces—erft de omgeving van het bovenliggende proces—maar kijk uit! Zoals we zullen zien, kunt u variabelen die niet toegevoegd aan je omgeving, zodat ze niet worden overgenomen door een onderliggend proces.
Als het onderliggende proces is een shell, dat shell initialiseren van de eigen, vers, set van variabelen. Dus, als u wijzigingen in de opdracht prompt in de huidige shell, en start dan een kind van shell, het kind shell zal niet erven met de gewijzigde commando prompt van de ouder.
Globale Omgevingsvariabelen
Door het verdrag, milieu-variabelen zijn gegeven hoofdletters namen. Hier zijn enkele van de globale omgevingsvariabelen, en wat de waarden die ze bevatten vertegenwoordigen:
- SHELL: De naam van de shell die starten bij het openen van een terminal venster. Op de meeste Linux-distributies, dit zal worden bash, tenzij u het hebt veranderd van de standaard.
- TERMIJN: de Terminal van windows zijn eigenlijk emulaties van een hardware-terminal. Dit bevat het type van de hardware terminal die zal worden geëmuleerd.
- GEBRUIKER: De gebruikersnaam van de huidige persoon die gebruik maakt van het systeem.
- PWD: Het pad naar de huidige map.
- OLDPWD: De directory die je in vóór de overstap naar de huidige werkmap.
- LS_COLORS: De lijst van de kleur codes die worden gebruikt door de ls hoogtepunt van verschillende bestandstypen.
- MAIL: Als het mailsysteem is ingesteld op uw Linux-computer (standaard, it isn ‘ t), dit houdt het pad naar de huidige gebruiker van de mailbox.
- PAD: EEN lijst van mappen waarin de shell zoekt vindt opdracht uitvoerbare bestanden.
- LANG: de taal, De lokalisatie en karakter codering instellingen.
- HUIS: De home directory van de huidige gebruiker.
- _: Het onderstrepingsteken (_) omgevingsvariabele in het bezit van de laatste opdracht die is getypt.
GERELATEERD: Hoe te Gebruiken pushd en popd op Linux
We kunnen zien wat sommige van deze zijn ingesteld met behulp van niets meer geavanceerd dan de echo, die zal schrijf de waarden in het terminal venster. Om de waarde van een omgevingsvariabele, moet u een dollarteken ($) aan het begin van de naam.
Een leuke bijkomstigheid is dat u kunt gebruiken op het tabblad afhandeling vul de naam van de omgevingsvariabele voor u. Typ een paar letters van de naam in en druk op Tab. De naam van de variabele wordt ingevuld door de shell. Als dat niet gebeurt, moet u typ een paar letters te onderscheiden van de omgevingsvariabele van andere commando ‘ s met namen die beginnen met dezelfde letters:
echo $SHELL
echo $LANG
echo $HOME
echo $PWD
Voor het maken van uw eigen globale omgevingsvariabelen, voeg ze toe aan het /etc/environment bestand. U moet sudo gebruiken om dit bestand te bewerken:
sudo gedit /etc/environment
Voor het toevoegen van een omgevingsvariabele, typ de naam van een is-gelijk-teken ( = ) en de gewenste waarde van de omgevingsvariabele te houden. Geen ruimte voor of na het gelijkteken (=). De naam van de omgevingsvariabele kan letters, een onderstrepings teken (_), of getallen. Echter, het eerste teken van een naam kan niet worden een aantal.
Als er spaties in de waarde, zorg ervoor dat u omsluiten de gehele waarde tussen aanhalingstekens (“).
Sla het bestand op, en log uit en weer in. Gebruiken echo om te testen of een variabele bestaat en houdt de door u ingestelde waarde:
echo $WEBSITE
Omdat het een wereldwijd milieu-variabele, en voor iedereen beschikbaar is, is gebruiker maria kunnen verwijzen naar de omgevingsvariabele toen ze de volgende logs:
echo $WEBSITE
Om alle omgevingsvariabelen in een keer, type printenv. Er is veel van de output, dus is het zinvol om de buis door te sorteren, en dan in minder:
printenv | sort | minder
De gesorteerde lijst van variabelen weergegeven voor ons minder.
We kunnen de output met een pijp door grep om te kijken voor milieu-variabelen die betrekking hebben op een bepaald onderwerp.
printenv | grep-GNOME
GERELATEERD: Hoe om Tekst te Bewerken Bestanden Grafisch op Linux Met kde
Shell Omgevingsvariabelen
Dit zijn enkele van de shell milieu-variabelen die gebruikt worden in bash te bepalen of het opnemen van zijn gedrag en functionaliteit. Sommige van de waarden worden bijgewerkt als u het gebruik van de terminal. Bijvoorbeeld, de KOLOMMEN milieu-variabele wordt bijgewerkt met de wijzigingen die u zou kunnen maken op de breedte van het terminal venster:
- BASHOPTS: De commando-regel opties die zijn gebruikt bij de bash werd gelanceerd.
- BASH_VERSION: De bash versie nummer als een reeks van woorden en getallen.
- BASH_VERSINFO: De bash in de vorm van een cijfer.
- KOLOMMEN: De huidige breedte van het terminal venster.
- DIRSTACK: De mappen die zijn toegevoegd aan de directory stack van de opdracht pushd.
- HISTFILESIZE: Maximum aantal regels is toegestaan in de geschiedenis.
- HISTSIZE: Aantal lijnen van de geschiedenis toegestaan in het geheugen.
- HOSTNAAM: De hostnaam van de computer.
- IFS: Het Interne Veld Scheidingsteken gebruikt om aparte ingang op de commando-regel. Standaard is dit een ruimte.
- PS1: De PS1-variabele bevat de definitie voor de primaire, de standaard, en opdrachtprompt. Een set van tokens genoemd escape-reeksen kunnen worden opgenomen in de definitie van uw command prompt. Zij vertegenwoordigen zaken als de host – en gebruikersnaam, dan wordt de huidige directory, en de tijd.
- PS2: Als een opdracht strekt zich uit over meer dan één regel en meer input verwacht, de secundaire opdrachtprompt wordt weergegeven. De PS2-omgevingsvariabele in het bezit van de definitie van de secundaire prompt, die standaard, is het groter dan teken (>).
- SHELLOPTS: Shell opties kunt u instellen met de optie instellen.
- UID: De Gebruikers-Id van de huidige gebruiker.
GERELATEERD: Hoe te Gebruiken pushd en popd op Linux
Laten we eens kijken een paar van deze shell variabelen:
echo $BASH_VERSION
echo $HOSTNAME
echo $KOLOMMEN
echo $HISTFILESIZE
echo $UID
Voor de volledigheid, hier worden de tokens die je kunt gebruiken in de command prompt definities:
- t: De huidige tijd, opgemaakt als HH:MM:SS.
- d: De huidige datum, uitgedrukt zoals weekdag, maand, datum.
- n: Een nieuwe-regel teken.
- s: De naam van de shell.
- W: De naam van je huidige directory.
- w: het pad naar De huidige map.
- u: De gebruikersnaam van de persoon die is ingelogd.
- h: De hostnaam van de computer.
- #: Elk commando in een shell is genummerd. Dit kunt u zien aan het nummer van de opdracht in de opdracht prompt. Dit is niet hetzelfde als het nummer van de opdracht zal hebben in de geschiedenis lijst.
- $: Stelt het definitieve karakter van de aanwijzing van een dollarteken ($) voor een gewone gebruiker, en een hash teken (#) voor de root gebruiker. Dit werkt door het controleren van de UID van de gebruiker. Als het nul is, is de gebruiker root.
U vindt de definitie van de PS1-variabele in je .bashrc bestand.
Het Maken Van Sessie Omgevingsvariabelen
Maken van omgevingsvariabelen voor uw eigen gebruik, voeg ze toe aan de onderkant van je .bashrc bestand. Als u wilt de milieu-variabelen beschikbaar zijn voor externe bijeenkomsten, zoals SSH-verbindingen, moet u ze toevoegen aan je .bash_profile bestand, als goed.
De indeling van de omgevingsvariabele definitie is dezelfde voor beide bestanden. Voor het toevoegen van een definitie aan je .bash_profile bestand, typt u dit in uw home directory:
gedit .bashrc
We hebben toegevoegd een omgevingsvariabele genaamd INHERITED_VAR. Let op het woord “exporteren” in het begin van de regel.
Opslaan en sluit het bestand nadat u klaar bent met de bewerking. Je kon log uit en weer in, of je kan de shell opnieuw te lezen .bash_profile-bestand met behulp van de punt opdracht (.) zoals deze:
. .bashrc
Nu, laten we een omgeving creëren variabele op de commando-regel:
LOCAL_VAR=”Deze sessie”
Als we een echo kunnen we zien dat zowel de milieu-variabelen zijn toegankelijk voor ons:
echo $LOCAL_VAR
echo $INHERITED_VAR
U zult merken dat de definitie van de INHERITED_VAR omgevingsvariabele had het woord “exporteren” in het begin van de regel. Dit betekent dat de omgevingsvariabele zal worden overgenomen door onderliggende processen van de huidige shell. Als we de lancering van een ander gebruik van de bash commando, kunnen wij de twee variabelen weer, vanuit de binnenkant van het kind shell:
bash
echo $LOCAL_VAR
echo $INHERITED_VAR
Zoals u kunt zien, de INHERITED_VAR is toegankelijk in het kind shell, maar LOCAL_VAR is het niet. We halen gewoon een lege regel.
Hoewel een “export”, voegt de omgeving variabele deel van de omgeving dat de onderliggende processen van de erven, INHERITED_VAR is niet een globale variabele van de omgeving. Bijvoorbeeld, de gebruiker maria niet kan verwijzen naar:
echo $INHERITED_VAR
Om onze kind bash sessie gebruiken we afsluiten:
afsluiten
Overgenomen omgevingen beïnvloeden scripts, ook. Hier is een simpel script dat schrijft de waarden van onze drie omgevingsvariabelen op het terminal venster:
#!/bin/bash
echo “WEBSITE” $WEBSITE
echo “LOCAL_VAR” $LOCAL_VAR
echo “INHERITED_VAR” $INHERITED_VAR
Dit was opgeslagen in een bestand genaamd envtest.sh en vervolgens maakte uitvoerbaar bestand met het volgende:
chmod +x envtest.sh
Wanneer we het script wordt uitgevoerd, kan toegang tot twee van de drie omgevingsvariabelen:
./envtest.sh
Het script zie de WEBSITE van global environment variabele en de INHERITED_VAR geëxporteerd omgevingsvariabele. Het kan niet de toegang LOCAL_VAR, hoewel het script wordt uitgevoerd in dezelfde shell waarin de variabele is gemaakt.
Als we willen, kunnen we de uitvoer van een omgevingsvariabele vanaf de command line. Dat doen We om onze LOCAL_VAR, en vervolgens voert u het script opnieuw:
export LOCAL_VAR
./envtest.sh
De omgevingsvariabele is toegevoegd aan de omgeving van de huidige shell, en het blijkt dus in de omgeving, dat wordt overgenomen door het script. Het script kan de verwijzing die omgevingsvariabele, ook.
Externe Verbindingen
Globale omgevingsvariabelen zijn toegankelijk voor remote login sessies, maar als u wilt dat uw lokaal gedefinieerde milieu-variabelen beschikbaar voor u om op afstand, moet u ze toevoegen aan uw .bash_profile bestand. U kunt de omgevingsvariabele in de .bashrc en .bash_profile bestanden, met de verschillende waarden. Dit kan worden opgepakt door een script te zeggen, te wijzigen zijn gedrag voor de mensen die het systeem lokaal of op afstand.
(Op het gevaar van verwarrende zaken, is er ook een .profiel-bestand. Het kan houden variabelen, ook. Echter, de .profiel van bestand is niet te lezen als de .bash_profile bestand aanwezig is. Dus, is het het veiligst om te doen, en de bash-compliant manier is te gebruiken .bash_profile bestand.)
Om het te bewerken .bash_profile bestand, gebruiken we gedit weer:
gedit .bash_profile
We gaan toevoegen dezelfde omgeving variabele met dezelfde waarde die we eerder gebruikten.
Sla uw wijzigingen op en sluit gedit af.
Op een andere computer, we maken van een SSH verbinding naar de computer testen.
ssh dave@howtogeek.local
Wanneer we verbonden zijn, zullen we het uitvoeren van het script nog een keer:
./envtest.sh
Het .bash_profile bestand is gelezen als onderdeel van de initialisatie van de remote login, en de INHERITED_VAR omgevingsvariabele is toegankelijk voor ons en het script.
Unsetting een omgevingsvariabele
Te terugkomt van een omgevingsvariabele gebruik van de unset commando. Als we terugkomt van de global environment variabele, WEBSITE, en de geëxporteerde omgevingsvariabele, INHERITED_VAR, ze zullen niet meer beschikbaar zijn op de commando-regel, noch in de onderliggende processen:
unset WEBSITE
unset INHERITED_VAR
./envtest.sh
echo $WEBSITE
Een punt om op te merken is dat dit alleen invloed op de beschikbaarheid van globale variabelen voor u in deze sessie. Een andere persoon die is ingelogd tegelijkertijd nog steeds toegang tot zijn exemplaar van die globale variabele van de omgeving. Zijn exemplaar werd geïnitialiseerd en het lezen van de /etc/environment bestand tijdens zijn login proces, en is onafhankelijk van die van iemand anders kopie van de variabele.
Als een voorbeeld, de gebruiker maria nog steeds toegang tot de WEBSITE omgevingsvariabele en lees de waarde, ook al is de gebruiker dave heeft uitgezet in zijn sessie:
echo $WEBSITE
Milieu-Controle
Omgevingsvariabelen kunnen worden gebruikt om te laten scripts en toepassingen weten hoe ze zich moeten gedragen. Ze kunnen worden gebruikt om instellingen te bewaren of kleine hoeveelheden gegevens. Bijvoorbeeld een script kan vullen in een omgeving met een waarde die kan worden verwezen door andere scripts, zonder ze op te schrijven naar een bestand.
LEES VERDER
- “Wat Is een “Bewaking” of “NAS” Harde Schijf?
- “Hoe Muziek Identificatie Apps Als Shazam Werk?
- “Het Gebruik van een Digitale Camera als Webcam
- “Het Verwijderen van E-Mailaccounts Van de Mail-App op iPhone en iPad
- “Het Instellen van een Oude Laptop voor Kinderen