Przejdź do głównej zawartości

env


  • env – program z pakietu coreutils (oraz standardu POSIX) umożliwiający wyświetlenie bieżącego środowiska lub uruchomienie komendy z tymczasowo zmodyfikowanymi zmiennymi.
  • Stosowany do czyszczenia środowiska (-i), debugowania konfiguracji (env | sort), pisania przenośnych shebangów (#!/usr/bin/env python3) oraz w skryptach CI/CD do ustawiania parametrów przy wywołaniu.
  • Dostępny w niemal wszystkich systemach Unix/Linux, macOS, BSD, BusyBox i jako narzędzie w MSYS/MinGW.

Okno terminala
env [opcje] # wypisuje wszystkie zmienne środowiskowe
env [opcje] [VAR=wartość ...] [polecenie [arg ...]]
  • Sekwencja VAR=wartość przed poleceniem ustawia/zmienia zmienną tylko na czas jego trwania.
  • Jeśli nie podano polecenia, env wypisuje środowisko po uwzględnieniu zmian.

ParametrOpis
-i, --ignore-environmentUruchamia z pustym środowiskiem, poza zmiennymi przekazanymi w linii poleceń.
-u <VAR>, --unset=<VAR>Usuwa wskazaną zmienną z odziedziczonego środowiska.
-C <DIR>Zmienia katalog roboczy przed uruchomieniem polecenia.
-0, --nullWypisuje zmienne zakończone znakiem NUL zamiast \n (współpraca z xargs -0).
-S, --split-string=<STR>Dzieli podany ciąg na zmienne i argumenty według reguł powłoki (GNU rozszerzenie).
--debugWyświetla szczegółowe komunikaty o przetwarzaniu (GNU).
--helpKrótka pomoc.
--versionWersja programu.

Okno terminala
# 1. Wypisanie środowiska posortowanego alfabetycznie
env | sort
# 2. Uruchomienie komendy z tymczasową zmianą $PATH
env PATH="/opt/custom/bin:$PATH" mytool --version
# 3. Całkowicie czyste środowisko (tylko HOME i PATH)
env -i HOME="$HOME" PATH="/usr/bin" bash --noprofile
# 4. Usunięcie zmiennej DEBUG i uruchomienie testów
env -u DEBUG pytest -q
# 5. Shebang transportowy w skrypcie Pythona
#!/usr/bin/env python3
print("Hello portable world")

  • Scope: Zmienne ustawione przez env VAR=... cmd obowiązują tylko w uruchamianym procesie i jego dzieciach – nie zmieniają bieżącej powłoki.
  • Pusty environment: Opcja -i może złamać programy oczekujące HOME, USER, PATH; dodaj niezbędne zmienne ręcznie.
  • Ścieżka shebang: #!/usr/bin/env <interpreter> znajduje interpreter według $PATH, zwiększając przenośność między systemami (np. python, node).
  • Split‑string: env -S 'VAR=val cmd -o "arg with space"' pozwala uniknąć cytowania w złożonych wywołaniach (GNU ≥ 8.30).
  • Bezpieczeństwo: Przy uruchamianiu zaufanych programów z nieznanych skryptów rozważ env -i aby wyeliminować wpływ złośliwych zmiennych (LD_PRELOAD, PYTHONPATH).

Błąd / KomunikatPrzyczynaRozwiązanie
env: 'cmd': No such file or directoryKomenda nieznaleziona w nowym $PATHDodaj poprawny PATH= lub użyj pełnej ścieżki.
Program nie działa pod -iBrak kluczowych zmiennych (LANG, TERM)Przekaż wymagane zmienne w linii poleceń.
Shebang /usr/bin/env python używa złej wersji$PATH wskazuje inny interpreterUstaw wirtualne środowisko lub w shebang podaj python3.
Zmienne z `envsortprzesłaniają wynikexport`env pokazuje runtime środowiska, export – zmienne zadeklarowane w bieżącej powłoceDo debugowania używaj obu poleceń.