Wyszukiwanie w witrynie

Jak ustawiać i rozbrajać zmienne środowiskowe lokalne, użytkownika i całego systemu w systemie Linux


Zmienne środowiskowe to specjalne zmienne zdefiniowane w powłoce i potrzebne programom podczas wykonywania. Mogą być zdefiniowane przez system lub przez użytkownika. Zmienne zdefiniowane systemowo to te, które są ustawiane przez system i używane przez programy na poziomie systemu.

Dla np. Polecenie PWD jest bardzo popularną zmienną systemową używaną do przechowywania bieżącego katalogu roboczego. Zmienne definiowane przez użytkownika są zazwyczaj ustawiane przez użytkownika tymczasowo dla bieżącej powłoki lub na stałe. Cała koncepcja ustawiania i usuwania ustawień zmiennych środowiskowych opiera się na pewnym zestawie plików i kilku poleceniach oraz różnych powłokach.

Mówiąc szerzej, zmienna środowiskowa może występować w trzech typach:

1. Lokalna zmienna środowiskowa

Jeden zdefiniowany dla bieżącej sesji. Te zmienne środowiskowe trwają tylko do bieżącej sesji, niezależnie od tego, czy jest to sesja zdalnego logowania, czy sesja lokalnego terminala. Zmienne te nie są określone w żadnych plikach konfiguracyjnych i są tworzone i usuwane za pomocą specjalnego zestawu poleceń.

2. Zmienna środowiskowa użytkownika

Są to zmienne definiowane dla konkretnego użytkownika i ładowane za każdym razem, gdy użytkownik loguje się przy użyciu sesji lokalnego terminala lub użytkownik loguje się przy użyciu sesji zdalnego logowania. Zmienne te są zazwyczaj ustawiane i ładowane z następujących plików konfiguracyjnych: .bashrc, .bash_profile, .bash_login, .profile pliki, które znajdują się w katalogu domowym użytkownika.

3. Zmienne środowiskowe obejmujące cały system

Są to zmienne środowiskowe, które są dostępne w całym systemie, tj. dla wszystkich użytkowników obecnych w tym systemie. Zmienne te znajdują się w ogólnosystemowych plikach konfiguracyjnych znajdujących się w następujących katalogach i plikach: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Zmienne te są ładowane za każdym razem, gdy system jest włączany i logowany lokalnie lub zdalnie przez dowolnego użytkownika.

Zrozumienie plików konfiguracyjnych dla całego użytkownika i całego systemu

Tutaj pokrótce opisujemy różne pliki konfiguracyjne wymienione powyżej, które przechowują zmienne środowiskowe, zarówno dla całego systemu, jak i specyficzne dla użytkownika.

.bashrc

Ten plik jest plikiem specyficznym dla użytkownika, który jest ładowany za każdym razem, gdy użytkownik tworzy nową sesję lokalną, czyli w prostych słowach otwiera nowy terminal. Wszystkie zmienne środowiskowe utworzone w tym pliku będą obowiązywać przy każdym uruchomieniu nowej sesji lokalnej.

.bash_profil

Ten plik jest plikiem zdalnego logowania specyficznym dla użytkownika. Zmienne środowiskowe wymienione w tym pliku wywoływane są za każdym razem, gdy użytkownik loguje się zdalnie, czyli przy użyciu sesji ssh. Jeśli tego pliku nie ma, system szuka plików .bash_login lub .profile.

/etc/środowisko

Ten plik jest plikiem systemowym służącym do tworzenia, edytowania lub usuwania dowolnych zmiennych środowiskowych. Zmienne środowiskowe utworzone w tym pliku są dostępne w całym systemie, dla każdego użytkownika, zarówno lokalnie, jak i zdalnie.

/etc/bash.bashrc

Ogólnosystemowy plik bashrc. Plik ten jest ładowany raz dla każdego użytkownika, za każdym razem, gdy użytkownik ten otwiera sesję terminala lokalnego. Zmienne środowiskowe utworzone w tym pliku są dostępne dla wszystkich użytkowników, ale tylko poprzez lokalną sesję terminalową. Gdy dostęp do dowolnego użytkownika na tym komputerze odbywa się zdalnie poprzez sesję zdalnego logowania, zmienne te nie będą widoczne.

/etc/profil

Plik profilu ogólnosystemowego. Wszystkie zmienne utworzone w tym pliku są dostępne dla każdego użytkownika systemu, ale tylko wtedy, gdy sesja tego użytkownika zostanie wywołana zdalnie, czyli poprzez zdalne logowanie. Żadna zmienna w tym pliku nie będzie dostępna dla lokalnej sesji logowania, tj. gdy użytkownik otworzy nowy terminal w swoim systemie lokalnym.

Uwaga: zmienne środowiskowe utworzone przy użyciu plików konfiguracyjnych dla całego systemu lub dla całego użytkownika można usunąć, usuwając je wyłącznie z tych plików. Tyle, że po każdej zmianie w tych plikach albo wyloguj się i zaloguj ponownie, albo po prostu wpisz następującą komendę na terminalu, aby zmiany odniosły skutek:

source <file-name>

Ustaw lub wyłącz zmienne środowiskowe lokalne lub obejmujące całą sesję w systemie Linux

Lokalne zmienne środowiskowe można utworzyć za pomocą następujących poleceń:

var=value 
OR
export var=value

Zmienne te dotyczą całej sesji i są ważne tylko dla bieżącej sesji terminala. Aby wyczyścić te zmienne środowiskowe obejmujące całą sesję, można użyć następujących poleceń:

1. Korzystanie ze środowiska

Domyślnie polecenie "env" wyświetla listę wszystkich bieżących zmiennych środowiskowych. Jednak użyte z przełącznikiem '-i' tymczasowo usuwa wszystkie zmienne środowiskowe i pozwala użytkownikowi wykonać polecenie w bieżącej sesji w przypadku braku wszystkich zmiennych środowiskowych.

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

Tutaj var=value odpowiada dowolnej lokalnej zmiennej środowiskowej, której chcesz używać tylko z tym poleceniem.

env –i bash

Da powłokę bash, która tymczasowo nie będzie miała żadnej zmiennej środowiskowej. Ale po wyjściu z powłoki wszystkie zmienne zostaną przywrócone.

2. Używanie nieustawionego

Innym sposobem na wyczyszczenie lokalnej zmiennej środowiskowej jest użycie polecenia unset. Aby tymczasowo wyłączyć dowolną lokalną zmienną środowiskową,

unset <var-name>

Gdzie nazwa-zmiennej to nazwa zmiennej lokalnej, którą chcesz usunąć lub wyczyścić.

3. Ustaw nazwę zmiennej na ”

Innym, mniej powszechnym sposobem byłoby ustawienie nazwy zmiennej, którą chcesz wyczyścić, na '' (Pusta). Spowoduje to wyczyszczenie wartości zmiennej lokalnej dla bieżącej sesji, dla której jest ona aktywna.

UWAGA – MOŻESZ NAWET GRAĆ I ZMIENIAĆ WARTOŚCI ZMIENNYCH SYSTEMU LUB ŚRODOWISKA UŻYTKOWNIKA, ALE ZMIANY BĘDĄ ODBIERANE TYLKO W BIEŻĄCEJ SESJI TERMINALOWEJ I NIE BĘDĄ STAŁE.

Dowiedz się, jak tworzyć zmienne środowiskowe dla całego użytkownika i całego systemu w systemie Linux

W tej sekcji dowiemy się, jak ustawiać lub rozbrajać zmienne środowiskowe lokalne, użytkownika i całego systemu w systemie Linux, korzystając z poniższych przykładów:

1. Ustawianie i rozbrajanie zmiennych lokalnych w systemie Linux

a.) Tutaj tworzymy zmienną lokalną VAR1 i ustawiamy jej dowolną wartość. Następnie używamy unset, aby usunąć tę zmienną lokalną, a na koniec ta zmienna jest usuwana.

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

b.) Innym sposobem utworzenia zmiennej lokalnej jest użycie polecenia export. Utworzona zmienna lokalna będzie dostępna dla bieżącej sesji. Aby usunąć ustawienie zmiennej, po prostu ustaw wartość zmiennej na ''.

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

c.) Tutaj utworzyliśmy zmienną lokalną VAR2 i ustawiliśmy ją na wartość. Następnie, aby uruchomić komendę tymczasowo usuwającą wszystkie lokalne i inne zmienne środowiskowe, wykonaliśmy komendę 'env –i'. To polecenie uruchomiło powłokę bash, usuwając wszystkie inne zmienne środowiskowe. Po wpisaniu 'exit' w wywołanej powłoce bash wszystkie zmienne zostaną przywrócone.

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

2. Ustawianie i usuwanie zmiennych środowiskowych dla całego użytkownika w systemie Linux

a.) Zmodyfikuj plik .bashrc w swoim katalogu domowym, aby wyeksportować lub ustawić zmienną środowiskową, którą musisz dodać. Następnie pobierz plik, aby zmiany zaczęły obowiązywać. Wtedy zobaczysz, że zmienna (w moim przypadku 'CD') zaczyna działać. Ta zmienna będzie dostępna za każdym razem, gdy otworzysz nowy terminal dla tego użytkownika, ale nie w przypadku sesji zdalnego logowania.

vi .bashrc

Dodaj następujący wiersz do pliku .bashrc na dole.

export CD='This is TecMint Home'

Teraz uruchom następujące polecenie, aby wprowadzić nowe zmiany i przetestować je.

source .bashrc 
echo $CD

Aby usunąć tę zmienną, po prostu usuń następujący wiersz z pliku .bashrc i ponownie go pobierz:

b.) Aby dodać zmienną, która będzie dostępna dla sesji zdalnego logowania (tj. podczas ssh do użytkownika ze zdalnego systemu), zmodyfikuj plik .bash_profile.

vi .bash_profile

Dodaj następujący wiersz do pliku .bash_profile na dole.

export VAR2='This is TecMint Home'

Podczas pobierania tego pliku zmienna będzie dostępna podczas połączenia SSH z tym użytkownikiem, ale nie podczas otwierania nowego terminala lokalnego.

source .bash_profile 
echo $VAR2

Tutaj VAR2 nie jest początkowo dostępny, ale po wykonaniu połączenia SSH z użytkownikiem na serwerze lokalnym zmienna staje się dostępna.

ssh tecmint@localhost
echo $VAR2

Aby usunąć tę zmienną, po prostu usuń linię z dodanego pliku .bash_profile i ponownie udostępnij plik.

UWAGA: te zmienne będą dostępne za każdym razem, gdy zalogujesz się na bieżącego użytkownika, ale nie dla innych użytkowników.

3. Ustawianie i usuwanie zmiennych środowiskowych ogólnosystemowych w systemie Linux

a.) Aby dodać ogólnosystemową zmienną niewymagającą logowania (tj. taką, która jest dostępna dla wszystkich użytkowników, gdy którykolwiek z nich otworzy nowy terminal, ale nie wtedy, gdy uzyskuje się zdalny dostęp do dowolnego użytkownika komputera), dodaj zmienną do a.)/etc/bash.bashrc.

export VAR='This is system-wide variable'

Następnie pobierz źródło pliku.

source /etc/bash.bashrc 

Teraz ta zmienna będzie dostępna dla każdego użytkownika, gdy otworzy dowolny nowy terminal.

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

Tutaj ta sama zmienna jest dostępna zarówno dla użytkownika root, jak i zwykłego użytkownika. Możesz to sprawdzić logując się na innego użytkownika.

b.) Jeśli chcesz, aby dowolna zmienna środowiskowa była dostępna, gdy którykolwiek użytkownik na Twoim komputerze jest zdalnie zalogowany, ale nie podczas otwierania nowego terminala na komputerze lokalnym, musisz edytować plik – '/etc/profile'.

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

Po dodaniu zmiennej wystarczy ponownie pobrać plik. Wtedy zmienna byłaby dostępna.

source /etc/profile
echo $VAR1

Aby usunąć tę zmienną, usuń linię z pliku /etc/profile i użyj jej ponownie.

c.) Jeśli jednak chcesz dodać dowolne środowisko, które ma być dostępne w całym systemie, zarówno w sesjach zdalnego logowania, jak i sesjach lokalnych (tzn. otwieraniu nowego okna terminala) dla wszystkich użytkownicy, po prostu wyeksportuj zmienną do pliku /etc/environment.

export VAR12='I am available everywhere'

Następnie po prostu pobierz plik, a zmiany zaczną obowiązywać.

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

Tutaj, jak widzimy, zmienna środowiskowa jest dostępna dla zwykłego użytkownika, użytkownika root, a także podczas sesji zdalnego logowania (tutaj do localhost).

Aby wyczyścić tę zmienną, po prostu usuń wpis z pliku /etc/environment i pobierz go ponownie lub zaloguj się ponownie.

UWAGA: zmiany zaczną obowiązywać w momencie pobrania pliku. Jeśli jednak nie, konieczne może być wylogowanie się i ponowne zalogowanie.

Wniosek

Oto kilka sposobów modyfikowania zmiennych środowiskowych. Jeśli znajdziesz jakieś nowe i interesujące sztuczki, wspomnij o tym w swoich komentarzach.