śr
System operacyjny | Unix , uniksopodobne , Inferno |
---|---|
Platforma | Międzyplatformowe |
Typ | Komenda |
Licencja | coreutils : GPLv3+ |
env
to polecenie powłoki dla systemów operacyjnych Unix i uniksopodobnych . Służy do drukowania listy zmiennych środowiskowych lub uruchamiania innego narzędzia w zmienionym środowisku bez konieczności modyfikowania aktualnie istniejącego środowiska. Za pomocą env
można dodawać lub usuwać zmienne, a istniejące zmienne można zmieniać, przypisując im nowe wartości.
W praktyce env
ma inne powszechne zastosowanie. Jest często używany przez skrypty powłoki do uruchamiania właściwego interpretera . W tym zastosowaniu środowisko zwykle nie ulega zmianie.
Historia
Wersja env
zawarta w GNU coreutils została napisana przez Richarda Mlynarika, Davida MacKenzie i Assafa Gordona. Po raz pierwszy pojawił się w 4.4BSD i jest częścią POSIX.1 (tylko z opcją -i ).
Środowisko GNU zostało rozszerzone o obsługę sygnałów i bieżącego katalogu. Środowisko FreeBSD obsługuje niestandardową ścieżkę wyszukiwania . Rozszerzenia znalezione w obu wersjach obejmują -u , do usuwania zmiennych i -S , do dzielenia argumentów (głównie w shebang).
Przykłady
Aby wydrukować zestaw bieżących zmiennych środowiskowych:
śr
Aby utworzyć nowe środowisko bez żadnych istniejących zmiennych środowiskowych dla nowej powłoki:
env -i /bin/sh
Aby uruchomić aplikację X xcalc i wyświetlić ją na innym ekranie (tj. ze zmodyfikowanym środowiskiem, czy określona zmienna środowiskowa zostanie zastąpiona nową wartością):
env DISPLAY = foo.bar:1.0 xcalc
Zauważ, że to użycie env jest często niepotrzebne, ponieważ większość powłok obsługuje ustawianie zmiennych środowiskowych przed poleceniem:
WYŚWIETLACZ = foo.bar:1.0 xcalc
env może być również użyty w linii skrótu skryptu, aby umożliwić wyszukiwanie interpretera za pomocą PATH. Na przykład, oto kod skryptu Pythona :
#!/usr/bin/env python3 print ( "Witaj, świecie!" )
W tym przykładzie /usr/bin/env
jest pełną ścieżką do polecenia env
. Środowisko nie jest zmienione.
Zauważ, że możliwe jest określenie interpretera bez użycia env
, podając pełną ścieżkę interpretera Pythona
. Problem z tym podejściem polega na tym, że w różnych systemach komputerowych dokładna ścieżka może być inna. Używając zamiast tego env,
jak w przykładzie, interpreter jest wyszukiwany i lokalizowany w momencie uruchamiania skryptu (dokładniej, env
wykonuje wywołanie systemowe do execvp
, które wykonuje zadanie zlokalizowania interpretera i uruchomienia go). To sprawia, że skrypt jest bardziej przenośny , ale także zwiększa ryzyko wybrania niewłaściwego interpretera, ponieważ szuka dopasowania w każdym katalogu na wykonywalnej ścieżce wyszukiwania. Cierpi również na ten sam problem, ponieważ ścieżka do pliku env
może być różna w zależności od maszyny.
Zobacz też
Linki zewnętrzne
- The Single UNIX Specification , Version 4 from The Open Group : ustaw środowisko do wywoływania poleceń – Shell and Utilities Reference,
- Podręcznik komend ogólnych Inferno –
- env — strona podręcznika z GNU coreutils .
- Podręcznik poleceń ogólnych FreeBSD –
- OpenBSD General Commands Manual : uruchamia program w zmodyfikowanym środowisku –
- Podręcznik poleceń ogólnych NetBSD : ustawianie i drukowanie środowiska –
- Podręcznik użytkownika systemu Linux – Polecenia użytkownika –
- podręcznik dotyczący poleceń użytkownika systemu Solaris 10 —