Linux nyomtatási környezeti változók. Útmutató a változókhoz Linux környezetben

A legalább egy, általában több alkalmazás által elnevezett és adatokat tartalmazó objektumokat környezeti változóknak nevezzük. Egyszerűen fogalmazva, a környezeti változó nem más, mint egy változó, amelynek neve és értéke van.

A környezeti változók értékei lehetnek az alapértelmezett szerkesztő, például a rendszeren végrehajtható összes fájl helye vagy a rendszer helyi beállításai. Kezdők számára kissé bonyolult, de egy környezeti változó nagyszerű módja a konfigurációs beállítások megosztásának több alkalmazás és folyamat között.

A Coreutils csomag tartalmazza az env és printenv programokat. Az összes aktuális értékkel rendelkező környezeti változó felsorolásához egyszerűen írja be:

$printenv

A bash shellben kétféle környezeti változó található:

  • Globális változók
  • Lokális változók

Globális környezeti változók

A shell-munkamenetből megjelennek a globális környezeti változók, és a shell által létrehozott utódfolyamatok.

Másrészt a helyi változókhoz csak akkor férhet hozzá a shell, amikor létrehozzák őket. Ez hasznossá teszi a globális környezeti változókat azokban az alkalmazásokban, amelyek információkat igényelnek a szülőfolyamattól, és létrehozzák a gyermekfolyamatokat.

Alapértelmezés szerint a Linux rendszer beállít bizonyos globális környezeti változókat a bash munkamenet indításakor. A rendszerkörnyezeti változók minden alkalommal csupa nagybetűt használnak, hogy megkülönböztessék őket a szokásos felhasználói környezeti változóktól.

Helyi környezeti változók

Mert a nevük azt jelzi, hogy a helyi környezeti változók csak abban a helyi folyamatban jeleníthetők meg, amelyben meghatározásra kerültek. Ne keverje össze a helyi környezeti változókat, ugyanolyan fontosak, mint a globális környezeti változók. Valójában a Linux rendszer alapértelmezés szerint szabványos helyi környezeti változókat is meghatároz az Ön számára. Ez bonyolulttá válik, amikor megpróbálja megnézni a helyi környezeti változók listáját. Sajnos nincs olyan parancs, amely csak a helyi környezeti változókat jeleníti meg. Van egy parancs, amely megjeleníti az adott folyamathoz beállított összes környezeti változót. Vegye figyelembe, hogy ez magában foglalja a globális környezeti változókat is.

Környezeti változók beállítása

Közvetlenül a bash shellből hozhat létre saját környezeti változókat. A következő részben megmutatjuk, hogyan hozhat létre saját környezeti változókat, és hogyan hivatkozhat rájuk az interaktív shellből vagy shell-programból.

Helyi környezeti változók beállítása

Ha egy bash shell elindult (vagy egy shell script megjelent), akkor létrehozhat helyi változókat, amelyek láthatók a shell folyamaton belül. Egy karakterlánchoz vagy numerikus változóhoz környezeti változót rendelhet az egyenlőségjellel, amelyhez a változó értéke van hozzárendelve:

$ andreyex_test=tesztelés $ echo $andreyex_test tesztelés $

Gratulálunk, most hozta létre az első változót. Ne feledje, hogy bármikor hivatkoznia kell az andreyex_test környezeti változó értékére, csak hivatkozzon rá a $andreyex_test néven.

Ha szóközt tartalmazó értékláncot kell hozzárendelnie, akkor egyetlen idézőjelvel kell jelölnie a karakterlánc elejét és végét:

$ andreyex_test=hosszú karakterlánc tesztelése -bash: a: parancs nem található $ andreyex_test="hosszú karakterlánc tesztelése" $ echo $andreyex_test hosszú karakterlánc tesztelése

Ha egyetlen idézőjel nélkül marad, a bash shell feltételezi, hogy a következő karakter egy másik feldolgozandó parancs.

Vegye figyelembe, hogy az általunk definiált helyi környezeti változóhoz kisbetűket, az eddig látott rendszerkörnyezeti változókban pedig minden nagybetűt használtunk.

A bash shellben ez az általános konvenció. Ha új környezeti változókat állít be, ez nem kötelező, de a kisbetű használata javasolt. Ez segít megkülönböztetni a személyes környezeti változókat a rendszerkörnyezeti változók eredményeitől.

JEGYZET. Nagyon fontos, hogy ne legyen szóköz a környezeti változó neve, az egyenlőségjel és az érték között. Ha szóközt tesz egy hozzárendelésben, a bash shell az értéket külön parancsként értelmezi:

$ andreyex_test2 = teszt -bash: andreyex_test2: parancs nem található $

A shell folyamatban beállított helyi környezeti változó bárhol használható lesz a shell folyamatban. De ha létrehoz egy másik parancsértelmezőt, az nem érhető el a gyermek shellben:

$ bash $ echo $andreyex_test $ kilépés kilépés $ echo $andreyex_test hosszú karakterlánc tesztelése $

Ebben az esetben elindítottunk egy gyerekhéjat. Mint látható, az andreyex_test környezeti változó nem érhető el a gyermek shellben (üres értéket tartalmaz). Miután elhagytuk a gyermek shellt, és visszatértünk az eredeti shellhez, a helyi környezeti változó továbbra is elérhető volt.

Hasonlóképpen, ha beállít egy helyi környezeti változót egy gyermekfolyamatban, miután elhagyta az utódfolyamatot, a helyi környezeti változó már nem érhető el:

$ bash $ andreyex_test=teszt $ echo $andreyex_teszt tesztelés $ kilépés kilépés $ echo $andreyex_teszt $

A gyermek shellben beállított andreyex_test környezeti változó nem létezik, amikor visszatérünk a szülőhéjhoz.

Globális környezeti változók beállítása

A globális környezeti változók láthatók a globális környezeti változót beállító folyamat által létrehozott összes gyermekfolyamatból. A globális környezeti változó létrehozására használt módszer egy helyi környezeti változó létrehozása, majd exportálása a globális környezetbe.

Ez az export paranccsal történik:

$ echo $andreyex_test hosszú karakterlánc tesztelése $ export andreyex_test $ bash $ echo $andreyex_test hosszú karakterlánc tesztelése $

Miután az export parancsot használtuk az andreyex_test helyi környezeti változóban, elindítottunk egy új shell-folyamatot, és megvizsgáltuk az andreyex_test környezeti változó értékét. Az export parancs ezúttal globálissá tette a globális környezeti változót, így megőrizte értékét.

Vegye figyelembe, hogy amikor az export parancsot helyi környezeti változón futtatja, akkor nem használja a dollárjelet a változó nevére való hivatkozáshoz.

Környezeti változók eltávolítása

Nyilvánvaló, hogy ha új környezeti változót tud létrehozni, akkor ésszerű lenne egy meglévő környezeti változót is törölni. Ezt az unset paranccsal lehet megtenni:

$ echo $andreyex_test tesztelés $ unset andreyex_test $ echo $andreyex_test $

Ha az unset parancsban környezeti változóra hivatkozik, ügyeljen arra, hogy ne használja a dollárjelet.

A dolgok egy kicsit bonyolultabbak a globális környezeti változók kezelésekor. Ha gyermekfolyamatban van, és letiltja a globális környezeti változót, az csak az utódfolyamatra vonatkozik. A globális környezeti változó elérhető marad a szülőfolyamatban:

$ andreyex_test=testing $ export andreyex_test $ bash $ echo $andreyex_test tesztelés $ unset andreyex_test $ echo $andreyex_test $ kilépés kilépés $ echo $andreyex_test tesztelés $

Ebben a példában beállítunk egy andreyex_test nevű helyi környezeti változót, majd exportáljuk, hogy globális környezeti változóvá tegyük. Ezután elindítottuk a gyermek shell folyamatot, és ellenőriztük, hogy az andreyex_test globális környezeti változó továbbra is elérhető-e. Ezután még a gyermek shellben az unset paranccsal eltávolítottuk az andreyex_test globális környezeti változót, majd kiléptünk a gyermek shellből. Most visszatérve az eredeti szülő shellhez, ellenőriztük az andreyex_test környezeti változó értékét, és továbbra is érvényes.

Shell alapértelmezett környezeti változói

Vannak speciális környezeti változók, amelyeket a bash shell a rendszerkörnyezet meghatározására használ. Ezeket a változókat mindig megszámolhatja a Linux rendszeren való használatra. Mivel a bash shell az eredeti Bourne Unix shell származéka, tartalmazza az abban a shellben eredetileg meghatározott környezeti változókat is.

A következő példák azt mutatják, hogy a bash shell által biztosított környezeti változók kompatibilisek az eredeti Bourne Unix rendszerhéjjal.

Ezen a listán messze a legértékesebb környezeti változó a PATH környezeti változó.

Amikor parancsot ír be egy shell parancshéjba (parancssori felület), a shellnek meg kell keresnie a rendszert, hogy megtalálja a programot. A parancsokat keresett könyvtárakat a PATH környezeti változó határozza meg. Linux rendszeren a PATH környezeti változónak valahogy így kell kinéznie:

$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $

Ebben az esetben látható, hogy nyolc olyan könyvtár van, amelyben a shell parancsokat keres. Minden könyvtár kettősponttal van elválasztva, és a PATH változó nem ér véget a könyvtárlista végével. Mindig hozzáadhat további könyvtárakat a PATH-hoz egy új könyvtár hozzáadásával és egy másik kettőspont hozzáadásával. A PATH megjeleníti azt a lekérdezést is, amelyben megrendeléseket keres.

A szabványos Bourne környezeti változókon kívül a bash shell számos változót is tartalmaz, amint az látható:

Bash Shell Bourne változók:

CDPATH: A cd parancs keresési útvonalaként használt könyvtárak kettősponttal elválasztott listája.
HOME: Az aktuális felhasználó saját könyvtára.
IFS: A shell által a szövegsorok elválasztására használt mezőket elválasztó karakterek listája.
MAIL: az aktuális felhasználó postafiókjának fájlneve. A bash shell ellenőrzi ezt a fájlt az új levelekért.
MAILPATH: Több fájlnév lista az aktuális felhasználó postafiókjához. A bash shell minden egyes fájlt a listában ellenőrzi, hogy vannak-e új levelek.
OPTARG: A getopts parancs által feldolgozott utolsó opció argumentum értéke.
OPTIND: A getopts parancs által feldolgozott utolsó beállítás argumentum indexértéke.
PATH: A könyvtárak kettősponttal elválasztott listája, ahol a shell parancsokat keres.
PS1: Fő parancssori parancssor.
PS2: Másodlagos shell CLI prompt karakterlánc.

Shell bash környezeti változók:

BASH: Teljesen megadott elérési út a bash shell aktuális példányának végrehajtásához.
BASH_ENV: Telepítéskor minden bash szkript megpróbálja futtatni az e változó által meghatározott indítófájlt a futtatás előtt.
BASH_VERSION: A bash shell aktuális példányának verziószáma.
BASH_VERSINFO: Változótömb, amely az aktuális bash shell-példány egyes fő- és mellékverzióit tartalmazza.
OSZLOPOK: tartalmazza az aktuális bash shell példányhoz használt terminál terminálszélességét.
COMP_CWORD: A COMP_WORDS változó indexe, amely tartalmazza a kurzor aktuális pozícióját.
COMP_LINE: aktuális parancssor.
COMP_POINT: A kurzor aktuális pozíciójának indexe az aktuális parancs elejéhez képest.
COMP_WORDS: Az aktuális parancssorban lévő egyes szavakat tartalmazó változótömb.
COMPREPLY: A shell függvény által generált lehetséges befejezési kódokat tartalmazó változótömb.
DIRSTACK: A könyvtárverem aktuális tartalmát tartalmazó változók tömbje.
EUID: Az aktuális felhasználó érvényes felhasználói azonosítója.
FCEDIT: Az fc parancs által használt alapértelmezett szerkesztő.
FIGNORE: A fájlnév-kiegészítés során figyelmen kívül hagyandó utótagok kettősponttal elválasztott listája.
FUNCNAME: Az éppen futó shell-függvény neve.
GLOBIGNORE: A minták kettősponttal elválasztott listája, amely megadja a fájlnév kibontásakor figyelmen kívül hagyandó fájlneveket.
CSOPORTOK: Változótömb, amely azon csoportok listáját tartalmazza, amelyeknek az aktuális felhasználó tagja.
histchars: legfeljebb három karakter, amely irányítja a történelem kiterjesztését.
HISTCMD: Az aktuális parancs előzményszáma.
HISTCONTROL: Azt szabályozza, hogy mely parancsok kerüljenek be a shell előzménylistába.
HISTFILE: fájlnév a shell előzmények listájának mentéséhez (alapértelmezett a history.bash).
HISTFILESIZE: Az előzményfájlban tárolható sorok maximális száma.
HISTIGNORE: A minták kettősponttal elválasztott listája annak meghatározására, hogy mely parancsok figyelmen kívül maradnak az előzményfájlban.
HISTSIZE: Az előzményfájlban tárolt parancsok maximális száma.
HOSTFILE: A fájl nevét tartalmazza, amelyet akkor kell olvasni, amikor a shellnek ki kell töltenie a gazdagép nevét.
HOSTNAME: Az aktuális gazdagép neve.
HOSTTYPE: A gazdagép bash-shelljét leíró karakterlánc fut.
IgnoreeOF: Az egymást követő EOF karakterek száma, amelyet a shellnek meg kell kapnia a kilépés előtt. Ha ez az érték nem létezik, akkor alapértelmezés szerint egy.
INPUTRC: A Readline inicializálási fájl neve (alapértelmezett .inputrc).
LANG: A shell területi kategóriája.
LC_ALL: Felülbírálja a LANG változót a területi beállítás kategóriájának megadásával.
LC_COLLATE: Beállítja a karakterlánc-értékek rendezésekor használt rendezési sorrendet.
LC_CTYPE: Megadja a fájlnév-bővítésben és a mintaillesztésben használt karakterek értelmezését.
LC_MESSAGES: Megadja a dollárjel előtti dupla idézőjeles karakterláncok értelmezésekor használandó területi beállítást.
LC_NUMERIC: Megadja a számok formázásához használt helyi beállítást.
LINENO: sorszám a végrehajtott szkriptben.
LINES: Meghatározza a terminálon elérhető vonalak számát.
MACHTYPE: A rendszer típusát meghatározó karakterlánc cpu-company-system formátumban.
MAILCHECK: Milyen gyakran kell a rendszerhéjnak ellenőriznie (alapértelmezett 60 másodperc) az új leveleket.
OLDPWD: A shell által használt előző munkakönyvtár.
OPTERR: Ha 1-re van állítva, a bash shell megjeleníti a getopts parancs által generált hibákat.
OSTYPE: Az operációs rendszert meghatározó karakterlánc, amelyen a shell fut.
PIPESTATUS: Változótömb, amely az előtérben lévő folyamatok kilépési állapotértékeinek listáját tartalmazza.
POSIXLY_CORRECT: Ha be van állítva, a bash POSIX módban fut.
PPID: A bash shell szülőfolyamatának folyamatazonosítója (PID).
PROMPT_COMMAND: Ha be van állítva, az elsődleges prompt előtt végrehajtandó parancs jelenik meg.
PS3: Prompt a select parancs használatához.
PS4: A parancssor előtt megjelenő prompt visszhangzik, ha a bash -x opciót használja.
PWD: aktuális munkakönyvtár.
VÉLETLENSZERŰ: 0 és 32767 közötti véletlenszámot ad vissza. Ha értéket rendel ehhez a változóhoz, akkor véletlenszám-generátor jön létre.
VÁLASZ: Az olvasási parancs alapértelmezett változója.
SECONDS: A shell elindítása óta eltelt másodpercek száma. Egy érték hozzárendelése visszaállítja az időzítőt egy értékre.
SHELLOPTS: Az engedélyezett bash shell opciók kettősponttal elválasztott listája.
SHLVL: Megadja a shell szintjét, eggyel növelve minden alkalommal, amikor új bash shell indul.
IDŐFORMÁTUM: Olyan formátum, amely meghatározza, hogy a shell hogyan jelenítse meg az időértékeket.
TMOUT: Annak értéke, hogy mennyi ideig (másodpercben) kell várnia a kiválasztási és olvasási parancsoknak a bevitelre. Az alapértelmezett nulla azt jelenti, hogy korlátlan ideig kell várni.
UID: Az aktuális felhasználó valódi felhasználói azonosítója.

Észreveheti, hogy a set parancs használata után nem jelenik meg minden alapértelmezett környezeti változó. Ennek az lehet a magyarázata, hogy bár ezek alapértelmezett környezeti változók, nem kell mindegyiknek tartalmaznia értéket.

Következtetés

Ebben az útmutatóban a Linux környezeti változóinak világát fedeztük fel. A globális környezeti változókhoz gyakran bármely utódfolyamat hozzáfér, amelyet a definiálási folyamat hozta létre. A helyi környezeti változók csak abból a folyamatból lesznek elérhetők, amelyben meghatározásra kerültek.

A Linux rendszer az egyes globális és helyi környezeti változókat használja a rendszerkörnyezet információinak tárolására. Ezeket az információkat a shell parancssori felületéről érheti el, valamint a belső shell szkriptekhez is. A bash shell az eredeti UNO Bourne shellben meghatározott rendszerkörnyezeti változókat, valamint számos új környezeti változót használja. A PATH környezeti változó határozza meg azt a keresési mintát, amelyet a bash shell elfogad a végrehajtható parancs megtalálásához. Módosíthatja a PATH környezeti változót saját könyvtárak hozzáadásához, vagy esetleg az aktuális könyvtár szimbólumot, hogy megkönnyítse a programok kezelését. Saját használatra is létrehozhat saját globális és helyi környezeti változókat. A környezeti változó létrehozása után a teljes shell-munkamenet számára elérhető.

Számos indítófájl van, amely elindítja a bash shellt az indítás után. Ezek az indítási fájlok környezeti változó-definíciókat tartalmazhatnak, hogy szabványos környezeti változókat állítsanak be az egyes bash-munkamenetekhez. Miután bejelentkezett egy Linux rendszerbe, a bash shell hozzáfér az /etc/profile indítófájlhoz, valamint három helyi felhasználónkénti indítófájlhoz: $HOME/.bash, $HOME/.bash login és $HOME/.profile.

A felhasználók testreszabhatják ezeket a fájlokat, hogy környezeti változókat és indító szkripteket tartalmazzanak saját használatra. A bash shell emellett környezeti változótömböket is biztosít. Ezek a környezeti változók több értéket is tartalmazhatnak egyetlen változóban. Az értékeket egyenként érheti el az indexérték megadásával, vagy általában a környezeti változótömb teljes nevének megadásával. Végül ebben az útmutatóban meg kell említenünk a parancsálnevek használatát. Bár nem környezeti változók, a parancsálnevek majdnem úgy viselkednek, mint a környezeti változók. Lehetővé teszik egy parancs fedőnevének meghatározását a beállításokkal együtt. Ahelyett, hogy egy nagyon hosszú parancsot és opciókat írna be, egyszerűen megadhat neki egy egyszerű álnevet, és bármikor használhatja a shell-munkamenet során.

Eredeti: Linux Fundamentals
Szerző: Paul Cobbaut
Megjelenés dátuma: 2014. október 16
Fordítás: A.Panin
Az átutalás időpontja: 2014. december 13

12. fejezet Shell változók

Ebben a fejezetben megtanuljuk, hogyan dolgozhatunk a környezeti változókkal a shell használatával. Ezek a változók általában szükségesek az alkalmazások működéséhez.

Dollár szimbólum ($)

A shell által értelmezett másik fontos szimbólum a dollár szimbólum $ . A shell keres egy környezeti változót, amelynek neve megegyezik a dollárjel utáni karakterlánccal, és lecseréli a megadott karaktert és változónevet az adott változó értékére (vagy semmire, ha a változó nem létezik).

Az alábbiakban néhány példa látható a $HOSTNAME, $USER, $UID, $SHELL és $HOME változók használatára. $ echo Ez a $SHELL shell Ez a /bin/bash shell $ echo Az adott $SHELL shell használatban van a gépen $HOSTNAME Az adott /bin/bash shell használatban van a gépen RHELv4u3.localdomain $ echo A $USER felhasználói azonosító $UID A paul felhasználói azonosító 500 $ echo Saját könyvtáram $HOME Az otthoni könyvtáram a /home/paul

Kis- és nagybetűk érzékenysége

Ez a példa azt mutatja, hogy a shell-változónevek megkülönböztetik a kis- és nagybetűket! $ echo Hello $USER Hello paul $ echo Hello $user Hello

Változók létrehozása

Ez a példa létrehozza a $MyVar változót, majd beállítja az értékét. A példa ezután az echo paranccsal ellenőrzi a létrehozott változó értékét. $ MyVar=555 $ echo $MyVar 555 $

Idézetek

Vegye figyelembe, hogy a dupla idézőjelek a változók kiterjesztését is lehetővé teszik a parancssorban, míg az idézőjelek megakadályozzák az ilyen bővítést. $ MyVar=555 $ echo $MyVar 555 $ echo "$MyVar" 555 $ echo "$MyVar" $MyVar

A bash shell lecseréli a változókat azok értékére a dupla idézőjeles karakterláncokban, de nem teszi ezt meg egy idézőjeles karakterláncokban. paul@laika:~$ city=Burtonville paul@laika:~$ echo "Most a $cityben vagyunk." Jelenleg Burtonville-ben vagyunk. paul@laika:~$ echo "Most a $városban vagyunk." Most $cityben vagyunk.

állítsa be a parancsot

A set paranccsal listázhatja a környezeti változókat. Ubuntu és Debian rendszereken a set parancs a shell függvényeket is felsorolja a shell változók listája után. Ezért, hogy megismerkedjen a környezeti változók listájának minden elemével, amikor ezekkel a rendszerekkel dolgozik, javasoljuk a | több.

unset parancs

Az unset paranccsal eltávolíthat egy változót a shell-környezetből. $ MyVar=8472 $ echo $MyVar 8472 $ unset MyVar $ echo $MyVar $

$PS1 környezeti változó

A $PS1 környezeti változó beállítja a shell üdvözlési formátumát. Formátumkarakterlánc beírásakor használhat fordított perjelet a speciális karakterek kihagyására, például \u a felhasználónév vagy \w a munkakönyvtár nevének megjelenítésére. A bash shell kézikönyvoldala a speciális karakterek teljes listáját tartalmazza.

Az alábbi példában többször megváltoztatjuk a $PS1 környezeti változó értékét. paul@deb503:~$ PS1=prompt prompt promptPS1="prompt " prompt prompt PS1="> " > > PS1="\u@\h$ " paul@deb503$ paul@deb503$ PS1="\u@\h :\W$" paul@deb503:~$

A végzetes hibák elkerülése érdekében használhatja a zöldet a normál felhasználók számára megjelenített shell promptokhoz, a pirosat pedig a root felhasználó számára megjelenített shell promptokhoz. Adja hozzá a következő sorokat a .bashrc fájlhoz, hogy zöld színt használjon a normál felhasználók számára megjelenített promptokhoz. # színes shell prompt készítette: paul RED="\[\033" WHITE="\[\033" GREEN="\[\033" BLUE="\[\033" export PS1="$(debian_chroot:+( $ debian_chroot))$GREEN\u$WHITE@$BLUE\h$WHITE\w\$ "

$PATH környezeti változó

A $PATH környezeti változó beállítja azokat a fájlrendszer-könyvtárakat, ahol a shell a parancsok végrehajtásához szükséges binárisokat keresi (kivéve, ha a parancs beépített vagy parancsálnév). Ez a változó kettősponttal elválasztott könyvtárútvonalakat tartalmaz. [$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:

A shell nem keres végrehajtható bináris fájlokat az aktuális könyvtárban. (A futtatható fájlok keresése az aktuális könyvtárban volt a legegyszerűbb mechanizmus a PC-DOS-t futtató számítógépeken tárolt adatokhoz való jogosulatlan hozzáféréshez). Ha azt szeretné, hogy a shell végrehajtható fájlokat keressen az aktuális könyvtárban, hozzá kell adnia a szimbólumot. annak a sornak a végére, amely a shell $PATH változójának értéke. $PATH=$PATH:. $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:. $

A shell $PATH változójának értéke eltérő lehet, ha a su parancsot használja a su - parancs helyett, mivel ez utóbbi parancs lehetővé teszi a célfelhasználó környezeti változóinak további használatát. Például a /sbin könyvtárakat általában hozzáadják a root felhasználó könyvtárainak listájához, amelyet a $PATH változó értéke képvisel. $ su Jelszó: # echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin # kilépés $ su - Jelszó: # echo $PATH /usr/local/sbin:/usr/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin: #

env parancsot

Az env parancs, ha paraméterek nélkül használja, listázza az exportált környezeti változókat. A különbség ez a parancs és az opciókat tartalmazó set parancs között az, hogy a set parancs felsorolja az összes környezeti változót, beleértve azokat a változókat is, amelyek nem kerülnek exportálásra gyermekhéjrendszerbe.

Ezenkívül az env paranccsal egy "tiszta" shell (környezet öröklése nélkül) indítható el. Az env -i parancs törli a gyermekhéj környezetét.

Ebben a példában vegye figyelembe, hogy a bash shell indításkor beállítja a $SHELL környezeti változót. $ bash -c "echo $SHELL $HOME $USER" /bin/bash /home/paul paul $ env -i bash -c "echo $SHELL $HOME $USER" /bin/bash $

Az env paranccsal beállíthatja a $LANG változó vagy ugyanazon bash shell bármely más környezeti változójának értékét egyetlen parancson belül. Az alábbi példa ezt a funkciót használja a $LANG változó értékének a mintafájl keresőmotor működésére gyakorolt ​​hatásának bemutatására (erről a mechanizmusról bővebben a mintafájl kereséséről szóló fejezetben olvashat). $ env LANG=C bash -c "ls File" Filea Fileb $ env LANG=en_US.UTF-8 bash -c "ls File" Fájl FájlA Fájl FájlB $

export parancsot

A shell-változókat az export paranccsal exportálhatja más héjakba. Az alábbi példában ez a parancs egy környezeti változót exportál gyermekhéjakba. $ var3=három $ var4=négy $ export var4 $ echo $var3 $var4 három négy $ bash $ echo $var3 $var4 négy

Ezzel a paranccsal azonban a változó nem exportálódik a szülő shellbe (alább az előző példa folytatása). $ export var5=öt $ echo $var3 $var4 $var5 négy öt $ kilépés kilépés $ echo $var3 $var4 $var5 három négy $

Változó határolók

Eddig azt láttuk, hogy a bash shell egy dollárjellel kezdődő változót értelmez, és addig folytatja az értelmezését, amíg meg nem jelenik az első nem alfanumerikus karakter, amely nem aláhúzás. Bizonyos helyzetekben ez a viselkedés problémát jelenthet. A probléma megoldására göndör fogszabályozó használható, amint az az alábbi példában látható. $ prefix=Szuper $ echo Hello $prefixman és $prefixgirl Hello és $ echo Hello $(prefix)man és $(prefix)girl Hello Superman és Supergirl $

Kötetlen változók

Az alábbi példa megpróbálja megjeleníteni a $MyVar változó értékét, de nem sikerül, mert a változó nem létezik. Alapértelmezés szerint a shell nem ad ki semmit, ha a változó nincs kötött (nem létezik). $ echo $MyVar $

Van azonban egy nounset shell opció, amellyel hibát generálhat, ha a használt változó nem létezik. paul@laika:~$ set -u paul@laika:~$ echo $Myvar bash: Myvar: kötetlen változó paul@laika:~$ set +u paul@laika:~$ echo $Myvar paul@laika:~$

A bash shellben az -u halmaz megegyezik a set -o nounset -el, és analógia szerint a +u halmaz azonos a +o nounset halmazzal.

Gyakorlat: Shell változók

2. Hozzon létre egy változót, amelynek értéke 42.

3. Másolja a $LANG változó értékét a $MyLANG változó értékébe.

4. Sorolja fel a jelenleg használt shell-változókat.

5. Sorolja fel az összes exportált shell-változót.

6. Van információ a változójáról az env és set parancsok kimenetében?

7. Törölje meg válaszváltozóját.

8. Hozzon létre két változót, és exportálja az egyiket.

9. Nyomtassa ki az exportált változó értékét a gyermek interaktív shellben.

10. Hozzon létre egy változót, és rendelje hozzá a "Dumb" értéket, majd hozzon létre egy másik változót "do" értékű azonos módon. Használja az echo parancsot és a létrehozott két változót a "Dumbledore" szó kimenetére.

11. Keresse meg a fordított perjel megtisztított vezérlőkarakterek listáját a bash shell kézikönyvoldalán. Adjon hozzá egy vezérlő karaktert a PS1 változó értékéhez, hogy megjelenítse az időt a shell hello-ban.

Helyes gyakorlati eljárás: Shell változók

1. Az echo paranccsal nyomtassa ki a "Szia" karakterláncot, majd a nevét. (Használja a bash shell változót!)

A Linux környezeti változói a shell által meghatározott speciális változók, amelyeket a programok a végrehajtás során használnak. Ezeket a rendszer és a felhasználó határozhatja meg. A Linux rendszer környezeti változóit a rendszer határozza meg, és a rendszerszintű programok használják.

Például a PWD parancs egy rendszerváltozót használ a régi munkakönyvtár megtartásához. A felhasználói környezeti változókat a felhasználó állítja be az aktuális shellhez, ideiglenesen vagy véglegesen. A shell-változók hozzáadásának és eltávolításának teljes koncepciója több fájl, parancs és különféle shell körül forog.

Tágabb értelemben egy környezeti változó háromféle lehet:

1. Helyi környezeti változók

Ezek a változók csak az aktuális munkamenethez vannak definiálva. A munkamenet vége után véglegesen törlődnek, legyen szó távoli hozzáférésről vagy terminálemulátorról. Nem tárolódnak semmilyen fájlban, hanem speciális parancsokkal jönnek létre és törlődnek.

2. Felhasználói shell-változók

Ezek a Linux shell változók egy adott felhasználó számára vannak meghatározva, és minden alkalommal betöltődnek, amikor a felhasználó bejelentkezik egy helyi terminál használatával vagy távolról csatlakozik. Az ilyen változókat általában konfigurációs fájlok tárolják: .bashrc, .bash_profile, .bash_login, .profile vagy más, a felhasználó könyvtárában található fájlok.

3. Rendszer környezeti változók

Ezek a változók az egész rendszerben, minden felhasználó számára elérhetők. A rendszer indításakor betöltődnek a rendszerkonfigurációs fájlokból: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.

Linux környezeti változó konfigurációs fájlok

Itt gyorsan áttekintjük a fent felsorolt ​​különféle konfigurációs fájlokat, amelyek a teljes rendszer vagy egy adott felhasználó környezeti változóinak beállítására szolgálnak.

.bashrc

Ez egy felhasználóspecifikus változófájl. Minden alkalommal betöltődik, amikor a felhasználó terminál munkamenetet hoz létre, azaz új terminált nyit. Az ebben a fájlban létrehozott környezeti változók minden új terminálmunkamenet indításakor érvénybe lépnek.

.bash_profile

Ezek a változók minden alkalommal érvénybe lépnek, amikor a felhasználó távolról SSH-n keresztül csatlakozik. Ha ez a fájl hiányzik, a rendszer a .bash_login vagy a .profile fájlt keresi.

/etc/environment

Ez a fájl a környezeti változók rendszerszintű létrehozására, szerkesztésére és törlésére szolgál. Az ebben a fájlban létrehozott környezeti változók a teljes rendszerre, minden felhasználó számára elérhetők, és még távoli csatlakozás esetén is.

/etc/bash.bashrc

System bashrc. Ez a fájl minden felhasználó számára lefut, minden alkalommal, amikor új terminálmunkamenetet hoz létre. Ez csak a helyi felhasználók számára működik, ha az interneten keresztül csatlakozik, az ilyen változók nem lesznek láthatók.

/etc/profile

A rendszerfájl profilja. A fájlban található összes változó csak akkor érhető el a rendszer bármely felhasználója számára, ha távolról bejelentkezett. De nem lesznek elérhetők helyi terminálmunka létrehozásakor, azaz ha csak megnyit egy terminált.

Az ezekkel a fájlokkal létrehozott Linux környezeti változók egyszerűen eltávolíthatók onnan. Csak minden módosítás után ki kell jelentkeznie és be kell jelentkeznie, vagy futtassa ezt a parancsot:

forrás fájlnév

Felhasználói és rendszerkörnyezeti változók hozzáadása Linuxban

Most, hogy ismer egy kis elméletet, térjünk át a gyakorlatra. A Linux helyi környezeti változói a következő parancsokkal hozhatók létre:

var=érték
$ export var=érték

Ezek a változók csak az aktuális terminálmunkamenethez lesznek elérhetők.

Számos parancs használható a környezeti változók eltávolítására:

1. Az env

Alapértelmezés szerint az env használható az összes beállított környezeti változó megtekintéséhez. De az -i kapcsolóval ideiglenesen eltávolíthatja az összes shell-változót, és a parancsot változók nélkül futtathatja.

env -i parancsot

A Var bármely változó, amelyet át szeretne adni ennek a parancsnak.

Ez a parancs egy környezeti változók nélküli shellt indít el:

Egy ilyen környezet elindítása után nem lesznek elérhetők a változók, de a kilépés után minden visszatér a helyére.

2. Unset használata

Ez egy másik módja a Linux környezeti változók eltávolításának. Az Unset név szerint eltávolít egy változót az aktuális munkamenet végéig:

unset változó_neve

3. Állítsa a változó értékét ""-ra

Ez a legegyszerűbb módja a környezeti változók törlésének Linuxban, ha egy változót üresre állít, akkor törli az aktuális munkamenet hátralevő részében.

Megjegyzés: Ezekkel a módszerekkel módosíthatja a rendszer- vagy felhasználói változók értékeit, de ezek csak az aktuális munkamenetre vonatkoznak.

Felhasználói és rendszerkörnyezeti változók létrehozása

Ebben a részben azt nézzük meg, hogyan állíthatunk be és távolíthatunk el rendszer- és felhasználói változókat nemcsak az aktuális munkamenethez, hanem úgy, hogy a hatás az újraindítás után is fennmaradjon.

1. Állítsa be és távolítsa el a helyi változókat Linuxban

Hozzunk létre egy VAR helyi változót, és állítsuk be tetszőleges értékre, majd távolítsuk el a beállítást hatástalanítva, és győződjön meg róla, hogy el lett távolítva:

VAR1="Veszteség"
$ echo $VAR1
$ hatástalanított VAR1
$ echo $VAR1

A változó létrehozásának másik módja az export parancs. Távolítsa el egy üres érték hozzárendelésével:

export VAR="Loss"
$ echo $VAR
$var=
$ echo $VAR

Most hozzunk létre egy VAR2 változót, és adjunk neki értéket. Ezután ideiglenesen távolítsa el az összes helyi változót az env -i parancs futtatásával. Változó nélkül elindítja a shellt. Az exit beírása után az összes változó visszaáll.

VAR2="Veszteség"
$ echo $VAR2
$ env -i bash
$ echo $VAR2

Felhasználói változók beállítása és eltávolítása

Szerkessze a .bashrc fájlt a saját könyvtárában egy export parancs hozzáadásával a kívánt változó exportálásához. Ezután futtassa a forrás parancsot a módosítások alkalmazásához. Hozzunk létre például egy CD-változót:

Adja hozzá ezt a sort (o, majd beillesztés, majd Esc és :wq):

export CD="Ez elveszett otthon"

Most van hátra a konfiguráció frissítése:

forrás .bashrc
$ echo $CD

A változó eltávolításához egyszerűen távolítsa el a .bashrc fájlból.

Most adjunk hozzá egy környezeti változót a .bash_profile értékkel. Ez a változó, amint azt már tudja, csak akkor lesz elérhető, ha távolról bejelentkezik:

vi .bash_profile

Sor hozzáadása:

export VAR2="Ez az elveszett otthon"

És futtassa ezeket a parancsokat a módosítások alkalmazásához és a változó hozzáadásának teszteléséhez:

forrás .bash_profile
$ echo $VAR2

A változó nem érhető el, mert helyi terminálmunkamenetet hozott létre, most csatlakozzon ssh-n keresztül:

ssh user@localhost
$ echo $VAR2

Ezt a környezeti változót ugyanúgy törölheti, mint az előző esetben, ha törli a fájlból.

Megjegyzés: Ezek a változók mindig elérhetőek, de nem minden felhasználó számára.

Rendszerkörnyezeti változók beállítása és eltávolítása

Hozzon létre egy változót, amely minden felhasználó számára elérhető minden terminálmunkamenetben, kivéve a távoli munkamenetekben, hozzáadva az /etc/bash.profile fájlhoz:

vi /etc/bash.profile

export VAR="Ez egy rendszerszintű változó"

Akkor frissítjük:

forrás /etc/bash.bashrc

Most ez a változó minden felhasználó számára elérhető minden terminálon:

echo $VAR
$ sudo su
$ echo $VAR
$su-
$ echo $VAR

Ha a környezeti változót minden olyan felhasználó számára elérhetővé szeretné tenni, aki távolról csatlakozik ehhez a géphez, szerkessze az /etc/profile fájlt:

export VAR1="Ez egy rendszerszintű változó, csak távoli munkamenetekhez"

Frissítse a konfigurációt, és ellenőrizze a változó elérhetőségét, csak távolról lesz elérhető:

forrás /etc/profile
$ echo $VAR1

Ha hozzá kell adnia egy környezeti változót Linuxon, hogy az elérhető legyen a távoli és a helyi munkamenetek számára is, exportálja az /etc/environon fájlba:

vi /etc/environment

export VAR12="Mindenhol elérhető vagyok"

Ellenőrizzük:

forrás /etc/environment
$ echo $VAR12
$ sudo su
$ echo $VAR12
$kilépés
$ ssh localhost
$ echo $VAR12

A paraméter fogalma héjban bash hasonló a változó fogalmához a hagyományos programozási nyelvekben. A paraméter neve (vagy azonosítója) lehet alfabetikus karakterekből, számjegyekből és aláhúzásjelekből álló szó (a szó első karaktere nem lehet számjegy), szám vagy a következő speciális karakterek egyike: * , @ , # , ? , - (kötőjel), $ , ! , 0 , _ (aláhúzás).

Egy paramétert akkor nevezünk beállítottnak vagy beállítottnak, ha hozzá van rendelve egy érték. Az érték lehet üres karakterlánc is. Egy paraméter értékének megjelenítéséhez használja a szimbólumot $ a neve előtt. Igen, a csapat

$echo név

jelenítse meg a szót név, és a parancs

$echo $name

a névváltozó értékét adja vissza (természetesen ha be van állítva).

5.6.1 A paraméterek változatai

A paraméterek három osztályba sorolhatók: helyzeti paraméterek, speciális paraméterek(amelyeknek a neve az imént felsorolt ​​speciális karakterek) és shell változók.

Nevek (azonosítók) helyzeti paraméterek egy vagy több számjegyből áll (de nem egyetlen nullából). A pozícióparaméterek azok az argumentumok, amelyeket a shell indításakor adtak meg (az első argumentum az 1. pozícióparaméter értéke stb.). A beépített paranccsal módosíthatja egy pozícióparaméter értékét készlet. Ezeknek a paramétereknek az értékei is megváltoznak, miközben a shell az egyik funkciót végrehajtja (erről alább lesz szó, mp. 5.8).

Különleges opciók olyan sablonok, amelyek cseréje (helyettesítése) az alábbiak szerint történik.

5.2. táblázat. Speciális lehetőségek.

Paraméter

Helyettesítési szabályok

Helyettesítve helyzeti paraméterekkel, kezdve az elsővel. Ha a helyettesítés dupla idézőjelben történik, akkor ezt a paramétert egyetlen szó helyettesíti, amely az összes pozícióparaméterből áll, és a speciális IFS-változó első karakterével elválasztva (amelyről az alábbiakban lesz szó). Vagyis a ``$*"" egyenértékű a ``$1c$2c..."-vel, ahol c az IFS változó értékének első karaktere. Ha az IFS nulla vagy nincs beállítva, a beállítások szóközzel vannak elválasztva

Helyettesítve helyzeti paraméterekkel, kezdve az elsővel. Ha a helyettesítés dupla idézőjelben történik, akkor minden paramétert külön szóval helyettesítünk. Tehát a `` $@"" egyenértékű a következővel: ""$1"" ""$2"" ... Ha nincsenek pozícióparaméterek, nincs érték hozzárendelve (a @ paraméter egyszerűen eltávolítva)

Helyettesítve a pozícióparaméterek számának decimális értékével

Az előtérben futó utolsó programcsatorna kilépési állapota váltja fel

(kötőjel)

Lecserélve a beépített paranccsal beállított aktuális zászlóérték-készletre készlet vagy magát a héjat indítva

A héj folyamatazonosítója (P ID) helyettesíti

Lecserélve az utoljára futó háttér (aszinkron módon végrehajtott) parancs folyamatazonosítójára (P ID).

Lecserélve a futtatott shell vagy szkript nevére. Ha bash A rendszer elindít egy kötegfájl végrehajtását, a $0 megegyezik a fájl nevével. Ellenkező esetben ez az érték megegyezik a shell teljes elérési útjával

(aláhúzás)

Lecserélve az előző végrehajtott parancs utolsó argumentumára (ha paraméterről vagy változóról van szó, akkor az értéke behelyettesítésre kerül)

A fenti táblázatban felsorolt ​​speciális paraméterek abban különböznek, hogy csak hivatkozni lehet rájuk; nem rendelhet hozzá értékeket.

Változó a shell szempontjából ez a név által jelölt paraméter. Az értékek a következő operátorral vannak hozzárendelve a változókhoz

$név=érték

Ahol név a változó neve, és érték— a hozzá rendelt érték (lehet üres karakterlánc). A változónév csak számokból és betűkből állhat, és nem kezdődhet számmal. Az érték bármilyen szöveg lehet. Ha az érték speciális karaktereket tartalmaz, akkor azt idézőjelbe kell tenni. A hozzárendelt érték természetesen nem tartalmazza ezeket az idézőjeleket. Ha a változó be van állítva, akkor a beépített shell paranccsal eltávolítható nincs beállítva.

Az összes beállított shell-változó készletét a hozzárendelt értékekkel környezetnek vagy shell-környezetnek nevezzük. paranccsal tekintheti meg készlet paraméterek nélkül (csak talán egy csővezetéket kell megszervezni "set|less"). A parancs kimenete ábécé sorrendben felsorolja az összes környezeti változót. Egy adott változó értékének megtekintéséhez a parancs használata helyett készlet(amelynek kimenetében még keresni és keresni kell a kívánt változót) használhatjuk a parancsot

$echo $name

(bár ebben az esetben tudnia kell az Önt érdeklő változó nevét).

A változók között a parancs kimenetében fog megjelenni készlet, van néhány nagyon érdekes változó. Ügyeljen például a RANDOM változóra. Ha a parancsot többször egymás után lefuttatja

$ echo $RANDOM

minden alkalommal új értéket kap. A helyzet az, hogy ez a változó egy véletlenszerű egész számot ad vissza a 0 és 32 768 közötti intervallumból.

5.6.2 Shell prompts

Az egyik nagyon fontos változó neve PS1. Ez a változó határozza meg a prompt típusát bash akkor nyomtat, amikor a felhasználó következő parancsára vár. Alapértelmezés szerint ez a változó "\s-\v\$ ". Valójában benne bash Négy felszólítás használható különböző helyzetekben. Változó PS1 A parancssor típusát határozza meg, amely akkor kerül kiadásra, amikor a shell parancsra vár. Változó által beállított másodlagos prompt PS2, akkor jelenik meg, amikor a shell arra vár, hogy a felhasználó adjon meg néhány további adatot, amely a futó parancs vagy program folytatásához szükséges. Alapértelmezett változó PS2 jelentése van" >" . Lehet, hogy már látta ezt a prompt a parancs futtatásakor macska adatok beviteléhez a billentyűzetről egy fájlba. Egy másik példa a parancs ftp, melynek indulása után a meghívó is ezt a formát ölti.

Változó prompt PS3, a parancsban használatos válassza ki. Változó prompt PS4, minden parancs előtt kinyomtatva, abban az időben, amikor bash figyelemmel kíséri a haladást. Az alapértelmezett érték " + ".

Ha van ilyen vágya, módosíthatja a változók típusát PS1És PS2. Ebben az esetben bármilyen, a billentyűzetről beírt karaktert használhat, valamint számos speciális karaktert, amelyek a prompt karakterlánc kialakításakor a táblázat szerint dekódolódnak. 5.3 (például csak néhány van megadva; a teljes listát lásd a segédprogram kézikönyvében bash) .

5.3. táblázat. Speciális karakterek meghívó létrehozásához

Szimbólum

A jelentése

Hangjelzés (ASCII kód ​​07)

Nap, hónap, nap formátumú dátum, például szerda, október 17.

Gazdanév az első pontig

Teljes gazdagépnév

Jelenlegi idő 24 órás formátumban: ÓÓ:PP:PP (óra:perc:másodperc)

Jelenlegi idő 12 órás formátumban: Ó:PP:PP

Jelenlegi idő 12 órás délelőtt/dél óra formátumban

A parancsértelmezőt elindító felhasználó neve

Az aktuális munkakönyvtár teljes neve (a gyökértől kezdve)

Aktuális munkakönyvtár (nincs megadva elérési út)

A # karakter, ha a shell szuperfelhasználóként fut, és a $ ha a shellt egy normál felhasználó indítja el.

\nnn

nnn oktális kóddal rendelkező karakter

Új sor (soremelés)

Shell név

Jelenlegi csapatszám

fordított perjel (fordított perjel)

Nem nyomtatható karakterek sorozatának eleje (ez a karakter használható terminálvezérlő karakterek sorozatának beillesztésére a prompt szövegbe)

A nem nyomtatható karakterek sorozatának vége

A parancs sorszáma a parancsok történetében

Az aktuális parancs száma (az aktuális munkamenetben végrehajtott parancs sorszáma) eltérhet a parancs előzménylistában szereplő számától, mivel ez utóbbi tartalmazza azokat a parancsokat, amelyek a parancselőzmény-fájlba kerültek.

Miután egy hint-et definiáló változó értékét a shell beolvassa, a paraméterbővítés, a parancsnevek és számtani kifejezések helyettesítése, valamint a szófelosztás szabályai szerint lehet benne helyettesítéseket végezni. Ezeket a szabályokat az alábbiakban a Szekcióban tárgyaljuk. 5.7.

Például a parancs végrehajtása után (mivel szóköz van a karakterláncban, az idézőjelek kötelezőek)

# PS1="[\u@\h \W]\$"

a szabványos prompt egy szögletes zárójelet, felhasználónevet és szimbólumot jelenít meg @ , számítógép neve, szóköz, aktuális könyvtárnév (nincs elérési út), záró szögletes zárójel és szimbólum $ (ha egy egyszerű felhasználó fut a shellben) ill # (ha a shell rootként fut).

5.6.3 Változó PÁLYA

Egy másik nagyon fontos változó neve PÁLYA. Megadja azoknak a könyvtáraknak az elérési útját, amelyekben bash megkeresi a fájlokat (különösen a parancsokat tartalmazó fájlokat) olyan esetekben, amikor a fájl teljes elérési útja nincs megadva a parancssorban. A listában szereplő egyes könyvtárak kettősponttal vannak elválasztva. Alapértelmezett változó PÁLYA könyvtárakat tartalmaz /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, azaz a következő formában van:

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:

Könyvtár hozzáadásához ehhez a listához futtassa a következő parancsot:

# PATH=$PATH:új_útvonal.

Kereséskor a shell pontosan abban a sorrendben keresi a könyvtárakat, ahogy azok a PATH változóban szerepelnek.

Vegye figyelembe, hogy az aktuális könyvtárat is felveheti ebbe a listába, ha egy pontot ad a PATH változóhoz. Ez azonban biztonsági okokból nem ajánlott: a támadó olyan parancsot helyezhet el a nyilvános könyvtárba, amelynek neve megegyezik a root felhasználó által gyakran végrehajtott parancsok egyikével, de teljesen más műveleteket hajt végre (különösen, ha az aktuális könyvtár a a keresési útvonal lista eleje).

5.6.4 Változó IFS

Ez a változó azt a belső mezőelválasztót adja meg, amely a parancssor végrehajtása előtt végrehajtott parancssori konverziók szófelosztásánál használatos. Ennek a változónak az alapértelmezett értéke "<Пробел><Символ_ новой_ строки>".

5.6.5 Aktuális és saját könyvtárak

Az aktuális könyvtár neve egy környezeti változóban tárolódik (PWD néven), és ennek a változónak az értéke a program minden indításakor megváltozik. CD(és akkor is, ha az aktuális könyvtárat bármilyen más módon módosítja, például a Midnight Commander segítségével).

Hasonlóképpen, a folyamatot elindító felhasználó saját könyvtárának teljes képzésű neve (útvonallal) a HOME változóban tárolódik.

5.6.6 Parancs export

Amikor egy shell végrehajt egy programot vagy parancsot, átadja nekik a környezeti változók egy részét. Ahhoz, hogy egy környezeti változó átkerüljön egy shellből indított folyamatnak, egy speciális paranccsal be kell állítani. export, azaz ahelyett

$név=érték

le kell írni

$ export név=érték

Ebben az esetben minden shell-ről indított program (beleértve magának a shell másodlagos példányait is) hozzáfér az így definiált változókhoz, azaz név szerint hívhatja az értékeit.

V. Kostromin (kos at rus-linux dot net) - 5.6. Paraméterek és változók. Shell környezet

A Linux környezeti változói a shell-változókkal együtt határozzák meg a beállításokat a felhasználói munkameneten belül.

Ezek automatikusan betöltődnek, de felülbírálhatók. A környezet minden alkalommal létrejön, amikor bejelentkezik a rendszerbe.

Linux környezeti változók, shell változók

Környezeti változók a felhasználói shell folyamathoz és az abban megjelenő összes gyermekfolyamathoz használják.

Shell változók olyan adatokat tartalmaznak, amelyek meghatározzák az aktuális munkamenet állapotát. Például az aktuális könyvtár.

Minden munkamenet környezeti változókat és héjváltozókat egyaránt használ.

A környezeti változók listája futtatással megtekinthető printenv vagy env

……
LC_MEASUREMENT=ru_RU.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LANG=en_US.UTF-8
……

A különbség az printenv lehetővé teszi egy adott változó adatainak megjelenítését – például:

Az env előnye, hogy lehetővé válik egy változó átadása egy adott parancsnak

Például:

env SHELL="/bin/bash" ls -la /opt

Környezeti változók megtekintése

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:forrásútvonal
BASH_ALIASES=()
BASH_ARGC=()
……

A kimenet átirányítható ide Kevésbé hogy könnyebb legyen eligazodni

Megteheti ezt annak érdekében, hogy megszabaduljon a felesleges információktól a kimenetben az aktuális környezet megváltoztatása nélkül

POSIX módban a bash által meghatározott funkciók nem kerülnek kinyomtatásra.

Leggyakrabban használt változók:
  • HÉJ- parancsokat értelmező shell
  • FELHASZNÁLÓ- felhasználó
  • PWD- aktuális könyvtár
  • TERM- az emulált terminál típusa

A shell parancsok lehetővé teszik a változók értékének megváltoztatását. A pwd így írja ki az aktuális könyvtárat a konzolra

/home/admin

Ez egy PWD shell változó

admin@desktop:~$ set | grep PWD

OLDPWD=/tmp
PWD=/home/admin

Menjünk a /tmp-be, és nézzük meg, hogyan változik az érték

admin@desktop:~$ cd /tmp/

admin@desktop:/tmp$ set | grep PWD

OLDPWD=/home/admin
PWD=/tmp

Látható, hogy a könyvtár megváltoztatásakor a PWD shell változó értéke csak változik, és változik is OLDPWD

Hogyan állíthatunk be egy környezeti vagy shell-változót

A shell változó így kerül hozzáadásra

SOMEVAR="Sziasztok"

Nem lesz az env kimenetben, mert ez egy shell változó, nem környezeti változó

A tartalmat az echo segítségével tekintheti meg, ha a név elé egy $ jelet ad

Szia

Ha változót szeretne hozzáadni a környezethez, exportálnia kell azt

export SOMEVAR="Sziasztok"

SOMEVAR=Sziasztok

Ezt követően az értéket a gyermekfolyamatok öröklik.

Környezeti változót törölhet ugyanazzal az export paranccsal a kulccsal -n

Az érték eltávolításra kerül a shell-ből az érvénytelenítéssel

Változók automatikus betöltése bejelentkezéskor

A Linux rendszerek fájlokat használnak ~/.bashrc, ~/.bash_profile, ~/.bash_login vagy ~/.profil változók meghatározásához. A fájlok beolvasásakor beolvasásra kerülnek, a terjesztéstől függ, hogy melyiket használjuk.

Ubuntu/Debain esetén ez a ~/.bashrc. Mind a környezeti változók, mind a shell változók hozzáadódnak hozzá.

Az első olvasnivaló /etc/profile. Meghatározza és újradefiniálható, hogy mely fájlokat és milyen sorrendben használja ezután.

A bejelentkezés nélküli munkamenetek esetén a változók az /etc/bash.bashrc fájlban vannak beállítva. Az ilyen munkamenet jellemző a háttérben futó szkriptekre.

A legtöbb feladathoz elegendő a szerkesztés ~/.bashrc.

Ossza meg