Android

Hoe omgevingsvariabelen in linux in te stellen en weer te geven

Linux-handleiding voor beginners

Linux-handleiding voor beginners

Inhoudsopgave:

Anonim

In Linux- en Unix-systemen zijn omgevingsvariabelen een set dynamische benoemde waarden, opgeslagen in het systeem die worden gebruikt door toepassingen die worden gestart in shells of subshells. In eenvoudige woorden, een omgevingsvariabele is een variabele met een naam en een bijbehorende waarde.

Omgevingsvariabelen stellen u in staat om aan te passen hoe het systeem werkt en het gedrag van de applicaties op het systeem. De omgevingsvariabele kan bijvoorbeeld informatie opslaan over de standaardteksteditor of -browser, het pad naar uitvoerbare bestanden of de instellingen voor systeemlocale en toetsenbordindeling.

In deze handleiding leggen we uit hoe u omgevings- en shell-variabelen kunt lezen en instellen.

Omgevingsvariabelen en Shell-variabelen

Variabelen hebben de volgende indeling:

KEY=value KEY="Some other value" KEY=value1:value2

  • De namen van de variabelen zijn hoofdlettergevoelig. Volgens afspraak moeten omgevingsvariabelen HOOFDLETTERS namen hebben. Bij het toewijzen van meerdere waarden aan de variabele moeten ze worden gescheiden door de dubbele punt : karakter. Er is geen spatie rondom het gelijk = symbool.

Variabelen kunnen worden ingedeeld in twee hoofdcategorieën, omgevingsvariabelen en shell-variabelen.

Omgevingsvariabelen zijn variabelen die systeembreed beschikbaar zijn en worden overgenomen door alle voortgebrachte onderliggende processen en shells.

Shell-variabelen zijn variabelen die alleen van toepassing zijn op de huidige shell-instantie. Elke shell zoals zsh en bash heeft zijn eigen set interne shell-variabelen.

Er zijn verschillende opdrachten beschikbaar waarmee u omgevingsvariabelen in Linux kunt weergeven en instellen:

  • env - Met de opdracht kunt u een ander programma uitvoeren in een aangepaste omgeving zonder het huidige te wijzigen. Bij gebruik zonder argument wordt een lijst met de huidige omgevingsvariabelen afgedrukt. printenv - De opdracht drukt alle of de opgegeven omgevingsvariabelen af. set - De opdracht schakelt shellvariabelen in of uit. Bij gebruik zonder argument wordt een lijst met alle variabelen afgedrukt, inclusief omgevings- en shell-variabelen en shell-functies. unset - De opdracht verwijdert shell- en omgevingsvariabelen. export - De opdracht stelt omgevingsvariabelen in.

Lijst omgevingsvariabelen

De meest gebruikte opdracht om de omgevingsvariabelen weer te geven is printenv . Als de naam van de variabele als argument aan de opdracht wordt doorgegeven, wordt alleen de waarde van die variabele weergegeven. Als er geen argument is opgegeven, drukt printenv een lijst af met alle omgevingsvariabelen, één variabele per regel.

Om bijvoorbeeld de waarde van de omgevingsvariabele HOME te geven die u zou uitvoeren:

printenv HOME

De output drukt het pad af van de momenteel ingelogde gebruiker:

/home/linuxize

U kunt ook meerdere argumenten doorgeven aan de opdracht printenv :

printenv LANG PWD

en_US /home/linuxize

printenv

De uitvoer ziet er ongeveer zo uit:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;… LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv

Hieronder staan ​​enkele van de meest voorkomende omgevingsvariabelen:

  • USER - De huidige aangemelde gebruiker. HOME - De thuismap van de huidige gebruiker. EDITOR - De standaard te gebruiken bestandseditor. Dit is de editor die wordt gebruikt wanneer u in uw terminal edit typt. SHELL - Het pad van de shell van de huidige gebruiker, zoals bash of zsh. LOGNAME - De naam van de huidige gebruiker. PATH - Een lijst met mappen die moeten worden doorzocht bij het uitvoeren van opdrachten. Wanneer u een opdracht uitvoert, zoekt het systeem in die mappen in deze volgorde en gebruikt het het eerst gevonden uitvoerbare bestand. LANG - De huidige landinstellingen. TERM - De huidige terminalemulatie. MAIL - Locatie waar de e-mail van de huidige gebruiker is opgeslagen.

De opdrachten printenv en env drukken alleen de omgevingsvariabelen af. Als u een lijst wilt krijgen van alle variabelen, inclusief omgeving, shell en variabelen en shell-functies, kunt u de opdracht set gebruiken:

set

BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()

Met de opdracht wordt een grote lijst met alle variabelen weergegeven, dus u wilt waarschijnlijk de uitvoer naar de opdracht less .

set | less

U kunt ook de opdracht echo gebruiken om een ​​shell-variabele af te drukken. Als u bijvoorbeeld de waarde van de variabele BASH_VERSION wilt afdrukken, zou u:

echo $BASH_VERSION

4.4.19(1)-release

Omgevingsvariabelen instellen

Om het verschil tussen de Shell- en de omgevingsvariabelen beter te illustreren, beginnen we met het instellen van Shell-variabelen en gaan we door naar de omgevingsvariabelen.

Om een ​​nieuwe shell-variabele met de naam MY_VAR en de waarde Linuxize te maken, typt u eenvoudig:

MY_VAR='Linuxize'

U kunt controleren of de variabele is ingesteld door echo $MY_VAR bij het filteren van de uitvoer van de set-opdracht met grep set | grep MY_VAR set | grep MY_VAR :

echo $MY_VAR

Linuxize

Gebruik de opdracht printenv om te controleren of deze variabele een omgevingsvariabele is of niet:

printenv MY_VAR

De uitvoer is leeg, wat aangeeft dat de variabele geen omgevingsvariabele is.

Je kunt ook proberen de variabele in een subshell af te drukken en je krijgt een lege uitvoer.

bash -c 'echo $MY_VAR'

De export wordt gebruikt om omgevingsvariabelen in te stellen.

Om een ​​omgevingsvariabele te maken, exporteert u eenvoudig de shell-variabele als omgevingsvariabele:

export MY_VAR

Je kunt dit controleren door te draaien:

printenv MY_VAR

Linuxize

bash -c 'echo $MY_VAR'

Linuxize

U kunt ook omgevingsvariabelen instellen op één regel:

export MY_NEW_VAR="My New Var"

Omgevingsvariabelen die op deze manier zijn gemaakt, zijn alleen beschikbaar in de huidige sessie. Als u een nieuwe shell opent of uitlogt, gaan alle variabelen verloren.

Persistente omgevingsvariabelen

Om omgevingsvariabelen persistent te maken, moet u die variabelen definiëren in de bash-configuratiebestanden. In de meeste Linux-distributies worden bij het starten van een nieuwe sessie omgevingsvariabelen gelezen uit de volgende bestanden:

  • /etc/environment - gebruik dit bestand om systeembrede omgevingsvariabelen in te stellen. Variabelen in dit bestand hebben de volgende indeling:

    FOO=bar VAR_TEST="Test Var"

    /etc/profile - variabelen die in dit bestand zijn ingesteld, worden geladen wanneer een bash-login shell wordt ingevoerd. Wanneer u omgevingsvariabelen in dit bestand declareert, moet u de export gebruiken:

    export JAVA_HOME="/path/to/java/home" export PATH=$PATH:$JAVA_HOME/bin

    Shell-configuratiebestanden per gebruiker. Als u bijvoorbeeld Bash gebruikt, kunt u de variabelen in de ~/.bashrc declareren:

    export PATH="$HOME/bin:$PATH"

Gebruik de opdracht source om de nieuwe omgevingsvariabelen in de huidige shell-sessie te laden:

source ~/.bashrc

Conclusie

In deze gids hebben we u laten zien hoe u omgevings- en shell-variabelen instelt en vermeldt.

Als je nog vragen hebt, kun je een reactie achterlaten.

terminal