Przegląd

W tym poradniku dowiesz się jak ustawić zmienne środowiskowe w Ubuntu, CentOS, Red Hat, w zasadzie w każdej dystrybucji Linuksa dla pojedynczego użytkownika i globalnie dla wszystkich użytkowników. Dowiesz się również jak wyświetlić listę wszystkich zmiennych środowiskowych i jak usunąć (wyczyścić) istniejące zmienne środowiskowe.

Zmienne środowiskowe są powszechnie używane w powłoce Bash. Jest to również powszechny sposób konfigurowania usług i obsługi sekretów aplikacji internetowych.

Nierzadko informacje specyficzne dla środowiska, takie jak punkty końcowe i hasła, są przechowywane jako zmienne środowiskowe na serwerze. Są one również używane do ustawiania ważnych lokalizacji katalogów dla wielu popularnych pakietów, takich jak JAVA_HOME dla Javy.

Ustawianie zmiennej środowiskowej

Aby ustawić zmienną środowiskową, używamy polecenia export. Nadajemy zmiennej nazwę, która jest używana do dostępu do niej w skryptach powłoki i konfiguracjach, a następnie wartość do przechowywania wszelkich danych potrzebnych w zmiennej.

export NAME=VALUE

Na przykład, aby ustawić zmienną środowiskową dla katalogu domowego ręcznej instalacji OpenJDK 11, użylibyśmy czegoś podobnego do poniższego.

export JAVA_HOME=/opt/openjdk11

Aby wypisać wartość zmiennej środowiskowej z powłoki, używamy polecenia echo i poprzedzamy nazwę zmiennej znakiem dolara ($).

echo $JAVA_HOME

I tak długo jak zmienna ma wartość, będzie ona wypisywana przez echo. Jeśli nie ma ustawionej wartości, zostanie wyświetlona pusta linia.

Unieważnienie zmiennej środowiskowej

Aby unieważnić zmienną środowiskową, co usuwa jej istnienie, używamy polecenia unset. Zwykłe zastąpienie zmiennej środowiskowej pustym ciągiem znaków nie spowoduje jej usunięcia, a w większości przypadków prawdopodobnie spowoduje problemy ze skryptami lub aplikacjami oczekującymi prawidłowej wartości.

Do ustawienia zmiennej środowiskowej używamy następującej składni

unset VARIABLE_NAME

Na przykład, aby wyłączyć zmienną środowiskową JAVA_HOME, użylibyśmy następującego polecenia.

unset JAVA_HOME

Wykazanie wszystkich ustawionych zmiennych środowiskowych

Aby wypisać wszystkie zmienne środowiskowe, po prostu używamy polecenia set bez żadnych argumentów.

set

Przykładowe wyjście wyglądałoby podobnie do poniższego, które zostało skrócone dla zwięzłości.

BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=(="0") BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=(="2" ="8") BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=(="5" ="0" ="3" ="1" ="release" ="x86_64-pc-linux-gnu") BASH_VERSION='5.0.3(1)-release' COLUMNS=208 DIRSTACK=() EUID=1000 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/ubuntu/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 HOME=/home/ubuntu HOSTNAME=ubuntu1904 HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LESSCLOSE='/usr/bin/lesspipe %s %s' LESSOPEN='| /usr/bin/lesspipe %s' LINES=54

Istniejące zmienne środowiskowe dla użytkownika

Gdy zmienna środowiskowa jest ustawiona z poziomu powłoki za pomocą polecenia export, jej istnienie kończy się, gdy sesje użytkownika dobiegają końca. Jest to problematyczne, gdy potrzebujemy, aby zmienna była trwała przez całą sesję.

Aby uczynić środowisko trwałym dla środowiska użytkownika, eksportujemy zmienną ze skryptu profilu użytkownika.

  1. Otwórz profil bieżącego użytkownika w edytorze tekstu
    vi ~/.bash_profile
  2. Dodaj polecenie eksportu dla każdej zmiennej środowiskowej, którą chcesz zachować.
    export JAVA_HOME=/opt/openjdk11
  3. Zapisz zmiany.

Dodanie zmiennej środowiskowej do profilu użytkownika bash samo w sobie nie spowoduje jej automatycznego wyeksportowania. Jednakże, zmienna zostanie wyeksportowana przy następnym logowaniu użytkownika.

Aby natychmiast zastosować wszystkie zmiany w bash_profile, użyj polecenia source.

source ~/.bash_profile

Eksportuj zmienną środowiskową

Eksport jest wbudowanym poleceniem powłoki Bash, używanym do eksportowania zmiennej środowiskowej, aby umożliwić nowym procesom potomnym dziedziczenie po niej.

Aby wyeksportować zmienną środowiskową, uruchamiamy polecenie export podczas ustawiania zmiennej.

export MYVAR="my variable value"

Pełną listę wyeksportowanych zmiennych środowiskowych możemy wyświetlić uruchamiając polecenie export bez żadnych argumentów.

export
SHELL=/bin/zshSHLVL=1SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.1pB5Pry8Id/ListenersTERM=xterm-256colorTERM_PROGRAM=vscodeTERM_PROGRAM_VERSION=1.48.2

Aby wyświetlić wszystkie wyeksportowane zmienne w bieżącej powłoce używamy flagi -p z poleceniem export.

export -p

Ustawianie trwałych globalnych zmiennych środowiskowych dla wszystkich użytkowników

Stałą zmienną środowiskową, która pozostanie po ponownym uruchomieniu, można utworzyć, dodając ją do profilu domyślnego. Ten profil jest ładowany przez wszystkich użytkowników w systemie, włączając w to konta serwisowe.

Wszystkie globalne ustawienia profilu są przechowywane w pliku /etc/profile. I chociaż ten plik może być edytowany w katalogu, to w rzeczywistości zaleca się przechowywanie globalnych zmiennych środowiskowych w katalogu o nazwie /etc/profile.d, gdzie znajduje się lista plików używanych do ustawiania zmiennych środowiskowych dla całego systemu.

  1. Utwórz nowy plik w katalogu /etc/profile.d, aby przechowywać globalną zmienną(e) środowiskową(e). Nazwa pliku powinna być kontekstowa, aby inni mogli zrozumieć jego przeznaczenie. Dla demonstracji, stworzymy stałą zmienną środowiskową dla HTTP_PROXY.
    sudo touch /etc/profile.d/http_proxy.sh
  2. Otwórz domyślny profil w edytorze tekstu.
    sudo vi /etc/profile.d/http_proxy.sh
  3. Dodaj nowe linie, aby wyeksportować zmienne środowiskowe
    export HTTP_PROXY=http://my.proxy:8080

    export HTTPS_PROXY=https://my.proxy:8080

    export NO_PROXY=localhost,::1,.example.com
  4. Zapisz zmiany i wyjdź z edytora tekstu

Podsumowanie

Ten tutorial opisywał jak ustawiać i usuwać zmienne środowiskowe dla wszystkich dystrybucji Linuksa, od Debiana do Red Hata. Dowiedziałeś się również jak ustawiać zmienne środowiskowe dla pojedynczego użytkownika, jak również dla wszystkich użytkowników.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *