Vyhledávání na webu

Jak nastavit a zrušit místní, uživatelské a systémové proměnné prostředí v Linuxu


Proměnné prostředí jsou některé speciální proměnné, které jsou definovány v shellu a které programy potřebují při provádění. Mohou být definované systémem nebo uživatelem. Systémově definované proměnné jsou ty, které jsou nastaveny systémem a jsou používány programy na systémové úrovni.

Pro např. Příkaz PWD je velmi běžná systémová proměnná, která se používá k uložení aktuálního pracovního adresáře. Uživatelem definované proměnné jsou obvykle nastaveny uživatelem, buď dočasně pro aktuální shell, nebo trvale. Celý koncept nastavení a zrušení nastavení proměnných prostředí se točí kolem nějaké sady souborů a několika příkazů a různých shellů.

V širším pojetí může být proměnná prostředí tří typů:

1. Proměnná místního prostředí

Jeden definovaný pro aktuální relaci. Tyto proměnné prostředí trvají pouze do aktuální relace, ať už jde o relaci vzdáleného přihlášení nebo relaci místního terminálu. Tyto proměnné nejsou specifikovány v žádném konfiguračním souboru a jsou vytvářeny a odstraňovány pomocí speciální sady příkazů.

2. Proměnná uživatelského prostředí

Toto jsou proměnné, které jsou definovány pro konkrétního uživatele a jsou načteny pokaždé, když se uživatel přihlásí pomocí relace místního terminálu nebo když je tento uživatel přihlášen pomocí relace vzdáleného přihlášení. Tyto proměnné se obvykle nastavují a načítají z následujících konfiguračních souborů: .bashrc, .bash_profile, .bash_login, .profile soubory, které se nacházejí v domovském adresáři uživatele.

3. Systémové proměnné prostředí

Toto jsou proměnné prostředí, které jsou dostupné v celém systému, tj. pro všechny uživatele přítomné v tomto systému. Tyto proměnné jsou přítomny v konfiguračních souborech celého systému v následujících adresářích a souborech: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Tyto proměnné jsou načteny pokaždé, když je systém zapnut a přihlášen buď lokálně nebo vzdáleně libovolným uživatelem.

Pochopení uživatelských a systémových konfiguračních souborů

Zde stručně popíšeme různé výše uvedené konfigurační soubory, které obsahují proměnné prostředí, ať už pro celý systém nebo pro uživatele.

.bashrc

Tento soubor je soubor specifický pro uživatele, který se načte pokaždé, když uživatel vytvoří novou místní relaci, tj. jednoduše řečeno otevře nový terminál. Všechny proměnné prostředí vytvořené v tomto souboru se projeví při každém spuštění nové lokální relace.

.bash_profile

Tento soubor je uživatelským souborem vzdáleného přihlášení. Proměnné prostředí uvedené v tomto souboru jsou vyvolány pokaždé, když se uživatel přihlásí vzdáleně, tj. pomocí relace ssh. Pokud tento soubor není přítomen, systém hledá soubory .bash_login nebo .profile.

/etc/environment

Tento soubor je systémový soubor pro vytváření, úpravu nebo odstraňování jakýchkoli proměnných prostředí. Proměnné prostředí vytvořené v tomto souboru jsou přístupné v celém systému, každému uživateli, lokálně i vzdáleně.

/etc/bash.bashrc

Soubor bashrc pro celý systém. Tento soubor je načten jednou pro každého uživatele, pokaždé, když tento uživatel otevře relaci místního terminálu. Proměnné prostředí vytvořené v tomto souboru jsou přístupné všem uživatelům, ale pouze prostřednictvím relace místního terminálu. Když se k libovolnému uživateli na tomto počítači přistupuje vzdáleně prostřednictvím relace vzdáleného přihlášení, tyto proměnné nebudou viditelné.

/etc/profile

Soubor profilu celého systému. Všechny proměnné vytvořené v tomto souboru jsou přístupné každému uživateli v systému, ale pouze v případě, že je relace tohoto uživatele vyvolána vzdáleně, tedy prostřednictvím vzdáleného přihlášení. Žádná proměnná v tomto souboru nebude přístupná pro relaci místního přihlášení, tj. když uživatel otevře nový terminál na svém lokálním systému.

Poznámka: Proměnné prostředí vytvořené pomocí systémových nebo uživatelských konfiguračních souborů lze odstranit jejich odstraněním pouze z těchto souborů. Po každé změně v těchto souborech se buď odhlaste a znovu přihlaste, nebo jednoduše zadejte následující příkaz na terminálu, aby se změny projevily:

source <file-name>

Nastavení nebo zrušení nastavení místních proměnných prostředí nebo proměnných pro celou relaci v systému Linux

Proměnné místního prostředí lze vytvořit pomocí následujících příkazů:

var=value 
OR
export var=value

Tyto proměnné se týkají celé relace a jsou platné pouze pro aktuální relaci terminálu. K vymazání těchto proměnných prostředí pro celou relaci lze použít následující příkazy:

1. Pomocí env

Ve výchozím nastavení příkaz "env" uvádí všechny aktuální proměnné prostředí. Pokud se však použije s přepínačem '-i', dočasně vymaže všechny proměnné prostředí a umožní uživateli provést příkaz v aktuální relaci v nepřítomnosti všech proměnných prostředí.

env –i [Var=Value]… command args…

Zde var=value odpovídá jakékoli místní proměnné prostředí, kterou chcete použít pouze s tímto příkazem.

env –i bash

Dá bash shell, který by dočasně neměl žádnou z proměnných prostředí. Ale jakmile opustíte shell, všechny proměnné budou obnoveny.

2. Pomocí unset

Dalším způsobem, jak vymazat místní proměnnou prostředí, je použití příkazu unset. Chcete-li dočasně zrušit nastavení jakékoli místní proměnné prostředí,

unset <var-name>

Kde, var-name je název lokální proměnné, kterou chcete zrušit nebo vymazat.

3. Nastavte název proměnné na ”

Dalším méně obvyklým způsobem by bylo nastavit jméno proměnné, kterou chcete vymazat, na '' (prázdné). Tím by se vymazala hodnota lokální proměnné pro aktuální relaci, pro kterou je aktivní.

POZNÁMKA – HODNOTY PROMĚNNÝCH SYSTÉMOVÉHO NEBO UŽIVATELSKÉHO PROSTŘEDÍ SI MŮŽETE DOKONCE HRÁT A ZMĚNIT, ZMĚNY SE VŠAK ODRAZÍ POUZE V SOUČASNÉ TERMINÁLOVÉ RELACI A NEBUDOU TRVALÉ.

Naučte se, jak v Linuxu vytvářet uživatelské a systémové proměnné prostředí

V části se naučíme, jak nastavit nebo zrušit nastavení lokálních, uživatelských a systémových proměnných prostředí v Linuxu s níže uvedenými příklady:

1. Nastavení a zrušení nastavení místních proměnných v Linuxu

a.) Zde vytvoříme lokální proměnnou VAR1 a nastavíme ji na libovolnou hodnotu. Potom použijeme unset k odstranění této lokální proměnné a na konci je tato proměnná odstraněna.

VAR1='TecMint is best Site for Linux Articles'
echo $VAR1
unset VAR1
echo $VAR1

b.) Dalším způsobem vytvoření lokální proměnné je použití příkazu export. Vytvořená lokální proměnná bude dostupná pro aktuální relaci. Chcete-li zrušit nastavení proměnné, jednoduše nastavte hodnotu proměnné na ''.

export VAR='TecMint is best Site for Linux Articles'
echo $VAR
VAR=
echo $VAR

c.) Zde jsme vytvořili lokální proměnnou VAR2 a nastavili ji na hodnotu. Poté, abychom mohli spustit příkaz, který dočasně vymaže všechny lokální a další proměnné prostředí, jsme provedli příkaz 'env –i'. Tento příkaz zde provedl bash shell vymazáním všech ostatních proměnných prostředí. Po zadání 'exit' na vyvolaném bash shellu by se všechny proměnné obnovily.

VAR2='TecMint is best Site for Linux Articles'
echo $VAR2
env -i bash
echo $VAR2   

2. Nastavte a zrušte nastavení proměnných uživatelského prostředí v Linuxu

a.) Upravte soubor .bashrc ve svém domovském adresáři a exportujte nebo nastavte proměnnou prostředí, kterou potřebujete přidat. Poté soubor zdrojujte, aby se změny projevily. Pak byste viděli, že proměnná (v mém případě 'CD') začíná platit. Tato proměnná bude k dispozici pokaždé, když otevřete nový terminál pro tohoto uživatele, ale ne pro relace vzdáleného přihlášení.

vi .bashrc

Přidejte následující řádek do souboru .bashrc dole.

export CD='This is TecMint Home'

Nyní spusťte následující příkaz, abyste provedli nové změny a otestovali jej.

source .bashrc 
echo $CD

Chcete-li tuto proměnnou odstranit, jednoduše odstraňte následující řádek ze souboru .bashrc a znovu jej vytvořte:

b.) Chcete-li přidat proměnnou, která bude dostupná pro relace vzdáleného přihlášení (tj. když ssh uživatele ze vzdáleného systému), upravte soubor .bash_profile.

vi .bash_profile

Přidejte následující řádek do souboru .bash_profile dole.

export VAR2='This is TecMint Home'

Při získávání tohoto souboru bude proměnná k dispozici, když ssh tomuto uživateli zadáte, ale ne při otevření jakéhokoli nového místního terminálu.

source .bash_profile 
echo $VAR2

Zde VAR2 není zpočátku k dispozici, ale po provedení ssh uživateli na localhost se proměnná zpřístupní.

ssh tecmint@localhost
echo $VAR2

Chcete-li tuto proměnnou odstranit, stačí odstranit řádek v souboru .bash_profile, který jste přidali, a soubor znovu vytvořit.

POZNÁMKA: Tyto proměnné budou dostupné pokaždé, když se přihlásíte k aktuálnímu uživateli, ale nikoli k ostatním uživatelům.

3. Nastavte a zrušte nastavení systémových proměnných prostředí v Linuxu

a.) Chcete-li přidat celosystémovou proměnnou bez přihlášení (tj. takovou, která je dostupná pro všechny uživatele, když kterýkoli z nich otevře nový terminál, ale ne, když je vzdálený přístup k libovolnému uživateli stroje), přidejte proměnnou do /etc/bash.bashrc.

export VAR='This is system-wide variable'

Poté vytvořte zdrojový soubor.

source /etc/bash.bashrc 

Nyní bude tato proměnná dostupná pro každého uživatele, když otevře jakýkoli nový terminál.

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

Zde je stejná proměnná dostupná pro root uživatele i běžného uživatele. Můžete to ověřit přihlášením k jinému uživateli.

b.) Pokud chcete, aby byla k dispozici jakákoli proměnná prostředí, když je některý uživatel na vašem počítači vzdáleně přihlášen, ale ne při otevírání nového terminálu na místním počítači, musíte soubor upravit – '/etc/profile'.

export VAR1='This is system-wide variable for only remote sessions'

Po přidání proměnné stačí soubor znovu vytvořit. Pak by byla proměnná k dispozici.

source /etc/profile
echo $VAR1

Chcete-li tuto proměnnou odstranit, odstraňte řádek ze souboru /etc/profile a znovu jej vytvořte.

c.) Pokud však chcete přidat jakékoli prostředí, které chcete, aby bylo dostupné v celém systému, a to jak v relacích vzdáleného přihlášení, tak v místních relacích (tj. otevření nového okna terminálu) pro všechny uživatelé, stačí exportovat proměnnou do souboru /etc/environment.

export VAR12='I am available everywhere'

Poté stačí zdrojový soubor a změny se projeví.

source /etc/environment
echo $VAR12
sudo su
echo $VAR12
exit
ssh localhost
echo $VAR12

Zde, jak vidíme, je proměnná prostředí dostupná pro normálního uživatele, uživatele root a také pro vzdálené přihlášení (zde k localhost).

Chcete-li tuto proměnnou vymazat, jednoduše odstraňte položku v souboru /etc/environment a znovu ji vytvořte nebo se znovu přihlaste.

POZNÁMKA: Změny se projeví, když zdroj souboru. Ale pokud ne, možná se budete muset odhlásit a znovu přihlásit.

Závěr

Toto je tedy několik způsobů, jak můžeme modifikovat proměnné prostředí. Pokud najdete nějaké nové a zajímavé triky pro totéž, uveďte je ve svých komentářích.