Android

Hur man ställer in och listar miljövariabler i Linux

Linux - Tab Autocomplete, Whatis, Man Pages, --Help

Linux - Tab Autocomplete, Whatis, Man Pages, --Help

Innehållsförteckning:

Anonim

I Linux- och Unix-baserade system är miljövariabler en uppsättning dynamiska namngivna värden, lagrade i systemet som används av applikationer som startats i skal eller subhells. I enkla ord är en miljövariabel en variabel med ett namn och ett tillhörande värde.

Miljövariabler låter dig anpassa hur systemet fungerar och beteendet hos applikationerna på systemet. Till exempel kan miljövariabeln lagra information om standardtextredigeraren eller webbläsaren, sökvägen till körbara filer eller systeminställningarna och inställningarna för tangentbordslayout.

I den här guiden kommer vi att förklara att läsa och ställa in miljö- och skalvariabler.

Miljövariabler och skalvariabler

Variabler har följande format:

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

  • Namnen på variablerna är skiftlägeskänsliga. Enligt konventionen bör miljövariabler ha UPPER CASE-namn. Vid tilldelning av flera värden till variabeln måste de separeras av kolon : karaktär. Det finns inget utrymme runt symbolen lika = .

Variabler kan klassificeras i två huvudkategorier, miljövariabler och skalvariabler.

Miljövariabler är variabler som är tillgängliga systemomfattande och ärvs av alla spawnade barnprocesser och skal.

Skalvariabler är variabler som endast gäller den nuvarande skalinstansen. Varje skal såsom zsh och bash har sin egen uppsättning interna skalvariabler.

Det finns flera kommandon som låter dig lista och ställa in miljövariabler i Linux:

  • env - Kommandot låter dig köra ett annat program i en anpassad miljö utan att ändra det nuvarande. När det används utan argument kommer det att skriva ut en lista över de aktuella miljövariablerna. printenv - Kommandot skriver ut alla eller de angivna miljövariablerna. set - Kommandot ställer in eller stänger av skalvariabler. När det används utan argument kommer det att skriva ut en lista över alla variabler inklusive miljö- och skalvariabler och skalfunktioner. unset - Kommandot raderar skal- och miljövariabler. export - Kommandot anger miljövariabler.

Lista miljövariabler

Det mest använda kommandot för att visa miljövariablerna är printenv . Om variabelns namn skickas som ett argument till kommandot, visas bara värdet på den variabeln. Om inget argument anges printenv ut printenv en lista över alla miljövariabler, en variabel per rad.

För att exempelvis visa värdet på den HOME miljövariabel du skulle köra:

printenv HOME

Utmatningen kommer att skriva ut banan för den för närvarande inloggade användaren:

/home/linuxize

Du kan också överföra mer än ett argument till kommandot printenv :

printenv LANG PWD

en_US /home/linuxize

printenv

Utgången ser ut så här:

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

Nedan följer några av de vanligaste miljövariablerna:

  • USER - Den aktuella inloggade användaren. HOME - Den aktuella användarens hemkatalog. EDITOR - Standardfilredigeraren som ska användas. Detta är redigeraren som kommer att användas när du skriver edit i din terminal. SHELL - Sökvägen för den aktuella användarens skal, till exempel bash eller zsh. LOGNAME - Namnet på den aktuella användaren. PATH - En lista över kataloger som ska sökas vid körning av kommandon. När du kör ett kommando kommer systemet att söka i de katalogerna i den här ordningen och använda den första hittade körbara. LANG - De aktuella lokaliseringsinställningarna. TERM - Den aktuella terminalemuleringen. MAIL - Plats för var den nuvarande användarens e-post lagras.

printenv och env skriver bara miljövariablerna. Om du vill få en lista över alla variabler, inklusive miljö, skal och variabler och skalfunktioner, kan du använda set kommandot:

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=()

Kommandot visar en stor lista med alla variabler så du förmodligen vill leda utdata till kommandot less .

set | less

Du kan också använda ekokommandot för att skriva ut en skalvariabel. För att exempelvis skriva ut värdet på variabeln BASH_VERSION du skulle köra:

echo $BASH_VERSION

4.4.19(1)-release

Ställa in miljövariabler

För att bättre illustrera skillnaden mellan Shell- och miljövariablerna börjar vi med att ställa in Shellvariabler och sedan gå vidare till miljövariablerna.

För att skapa en ny skalvariabel med namnet MY_VAR och värde Linuxize bara:

MY_VAR='Linuxize'

Du kan verifiera att variabeln är inställd genom att använda antingen ett echo $MY_VAR för att filtrera utgången från set-kommandot med grep set | grep MY_VAR set | grep MY_VAR :

echo $MY_VAR

Linuxize

Använd kommandot printenv att kontrollera om denna variabel är en miljövariabel eller inte:

printenv MY_VAR

Utgången kommer att vara tom vilket säger att variabeln inte är en miljövariabel.

Du kan också försöka skriva ut variabeln i ett underskal och du får en tom utgång.

bash -c 'echo $MY_VAR'

export används för att ställa in miljövariabler.

För att skapa en miljövariabel exporterar du bara skalvariabeln som en miljövariabel:

export MY_VAR

Du kan kontrollera detta genom att köra:

printenv MY_VAR

Linuxize

bash -c 'echo $MY_VAR'

Linuxize

Du kan också ställa in miljövariabler på en enda rad:

export MY_NEW_VAR="My New Var"

Miljövariabler som skapats på detta sätt är endast tillgängliga under den aktuella sessionen. Om du öppnar ett nytt skal eller om du loggar ut kommer alla variabler att gå förlorade.

Persistenta miljövariabler

För att göra miljövariabler variga måste du definiera dessa variabler i bash-konfigurationsfilerna. I de flesta Linux-distributioner när du startar en ny session läses miljövariabler från följande filer:

  • /etc/environment - Använd den här filen för att ställa in systemomfattande miljövariabler. Variabler i denna fil är inställda i följande format:

    FOO=bar VAR_TEST="Test Var"

    /etc/profile - Variabler som anges i den här filen laddas varje gång ett bash-inloggningsskal matas in. När du deklarerar miljövariabler i den här filen måste du använda export :

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

    Specifika konfigurationsfiler per användare. Om du till exempel använder Bash kan du förklara variablerna i ~/.bashrc :

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

För att ladda de nya miljövariablerna i den aktuella skal-sessionen använder du källkommandot:

source ~/.bashrc

Slutsats

I den här guiden har vi visat hur du ställer in och listar miljö- och skalvariabler.

Lämna gärna en kommentar om du har några frågor.

terminal