GNU/Linux >> Znalost Linux >  >> Linux

Python – Jak /usr/bin/env ví, který program použít?

Když používám shebang #!/usr/bin/env python pro spuštění skriptu, jak systém pozná, který python použít? pokud hledám python cestu bin v proměnných prostředí nenacházím nic.

env | grep -i python

Přijatá odpověď:

Shebang očekává úplnou cestu k interpretu, který se má použít, takže následující syntaxe by byla nesprávná:

#!python

Nastavení úplné cesty může fungovat takto:

#!/usr/local/bin/python

ale nebylo by přenosné, protože python by mohl být nainstalován v /bin , /opt/python/bin nebo kdekoli jinde.

Pomocí env

#!/usr/bin/env python

je metoda umožňující přenosným způsobem specifikovat OS úplnou cestu ekvivalentní té, kde python je nejprve umístěn v PATH .


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Proč je lepší používat jako Shebang „#!/usr/bin/env Name“ místo „#!/path/to/name“?

  3. Jak příkaz Xdg-open ví, kterou aplikaci použít k otevření souboru?

  1. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  2. Jak /usr/bin/time měří využití paměti?

  3. Jak zajistit, aby příkaz python3 spouštěl Python 3.6 místo 3.5?

  1. cmake --version ukazuje na /usr/bin/cmake, zatímco který cmake ukazuje na /usr/local/bin

  2. Rozdíl mezi /bin a /usr/bin

  3. Přesunutý obsah /bin do /usr/bin, je možné vrátit zpět?