export
- export – wbudowane polecenie powłok Bourne‑podobnych umożliwiające oznaczenie zmiennych tak, aby zostały przekazane do środowiska procesów potomnych.
- Kluczowe zastosowania: konfiguracja ścieżek (
PATH
), ustawienia lokalizacji (LANG
), parametrów aplikacji (JAVA_HOME
) w skryptach i sesjach. - Dostępne w Bash, Dash, Zsh, Ksh, BusyBox sh i większości powłok POSIX.
Składnia
Dział zatytułowany „Składnia”export [opcje] [nazwa[=wartość] ...]
- Bez argumentów (lub z
-p
) wypisuje wszystkie aktualnie wyeksportowane zmienne. - Można łączyć wiele par
nazwa=wartość
w jednym wywołaniu.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
nazwa=wartość | Definicja lub modyfikacja zmiennej środowiskowej i natychmiastowe jej eksportowanie. |
-p | Wypisz w formacie declare -x listę wszystkich zmiennych oznaczonych do eksportu. |
-n nazwa | Usuń flagę eksportu dla wskazanej zmiennej, nie usuwając jej wartości. |
-f | Eksportuj nazwaną funkcję powłoki (Bash, Ksh). |
--help | Krótka pomoc online (w Bash help export ). |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# Dodaj katalog do PATH i udostępnij go wszystkim procesom potomnymexport PATH="$PATH:/opt/mój_bin"
# Ustaw domyślny edytor i natychmiast uruchom vim, który dziedziczy zmiennąexport EDITOR=vimvim plik.txt
# Wyświetl listę wszystkich wyeksportowanych zmiennych w bieżącej sesjiexport -p
# Wyłącz eksport zmiennej DEBUG, lecz pozostaw ją w powłoceexport -n DEBUG
# Eksportuj funkcję do subshelli (tylko Bash/Ksh)myfunc() { echo "Hello $1"; }export -f myfunc
- Pierwszy przykład modyfikuje ścieżkę wykonywalnych plików użytkownika.
- Drugi pokazuje typowe ustawienie preferowanego edytora i natychmiastowe jego użycie.
- Trzeci służy do diagnostyki i debugowania środowiska.
- Czwarty demonstruje usuwanie flagi eksportu – procesy potomne nie odziedziczą zmiennej.
- Piąty umożliwia przekazywanie funkcji shellowych do subshelli lub przez
env -i bash -c ...
.
- export modyfikuje wyłącznie środowisko bieżącej powłoki i jej potomków; proces nadrzędny (np. terminal) nie otrzyma zmian po zakończeniu skryptu.
- Nazwy zmiennych muszą zaczynać się literą lub podkreśleniem i mogą zawierać cyfry; znaki specjalne są zabronione.
- W Bash opcja
set -a
automatycznie eksportuje wszystkie nowo zadeklarowane zmienne – przydatne w plikach konfiguracyjnych, lecz może prowadzić do zanieczyszczenia środowiska. - Wartości z odstępami wymagają cudzysłowów lub apostrofów:
export TITLE="Moja aplikacja"
. - Funkcje eksportowane różnią się między powłokami; w Dash i BusyBox nie są wspierane.
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
export: not valid identifier | Niepoprawna nazwa zmiennej (np. zaczyna się cyfrą lub zawiera - ) | Zmień nazwę na zgodną z POSIX, np. MY_VAR |
Zmienna nie widoczna w skrypcie podrzędnym | Zapomniano użyć export lub wywołano po uruchomieniu procesu | Eksportuj przed uruchomieniem programu: export VAR=value && cmd |
Funkcja nie przekazana | Powłoka docelowa nie obsługuje export -f | Użyj Bash lub przekaz skrypt zamiast funkcji |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man bash – Builtins – oficjalna dokumentacja wbudowanych poleceń.
- GNU Bash Reference Manual – Environment – szczegóły dotyczące środowiska i eksportu.
- POSIX Specification – Shell Command Language §2.9.1 – standard definiujący
export
.