GNU/Linux >> Linux Esercitazione >  >> Linux

Python:come fa /usr/bin/env a sapere quale programma utilizzare?

Quando uso lo shebang #!/usr/bin/env python per eseguire uno script, come fa il sistema a sapere quale python usare? se cerco un python bin path nelle variabili di ambiente non trovo nulla.

env | grep -i python

Risposta accettata:

Shebang si aspetta un percorso completo per l'interprete da utilizzare, quindi la seguente sintassi non sarebbe corretta:

#!python

L'impostazione di un percorso completo come questo potrebbe funzionare:

#!/usr/local/bin/python

ma non sarebbe portatile poiché python potrebbe essere installato in /bin , /opt/python/bin , o in qualsiasi altro luogo.

Usando env

#!/usr/bin/env python

è un metodo che consente in un modo portatile di specificare al sistema operativo un percorso completo equivalente a quello in cui python si trova prima nel PATH .


Linux
  1. Perché /bin/sh punta a /bin/dash e non a /bin/bash??

  2. In che modo /usr/bin/time misura l'utilizzo della memoria?

  3. cmake --version punta a /usr/bin/cmake mentre which cmake punta a /usr/local/bin

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Differenza tra /bin e /usr/bin

/usr/bin Vs /usr/local/bin Su Linux?

Linux – /sbin/init non esiste?

Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

Come fare in modo che il comando python3 esegua Python 3.6 anziché 3.5?

Qual è il significato di /usr/sbin, /usr/local/sbin e /usr/local/bin?

Quando devo usare #!/bin/bash e quando #!/bin/sh?