śr

ś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