El ejecutable CLI "python" parece ignorar la jerarquía de rutas

1

Tengo la siguiente situación extraña en mi Mac (recientemente instalada El Capitán, de lo contrario, vacía).

Noté que /usr/bin/python por defecto es python 2.7 (todavía), y el nuevo sistema de seguridad SIP me "protege" de reemplazarlo con un enlace simbólico para apuntar a python3 (que instalé en /usr/local/bin ). Noté que /usr/local/bin aparece primero en la ruta:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Así que me pareció genial, solo agregaré un enlace simbólico en /usr/local/bin llamado python y lo apuntaré a python3.

$ ls -al /usr/local/bin
...
lrwxr-xr-x   ... python -> /usr/local/bin/python3
lrwxr-xr-x   ... python3 -> ../Cellar/python3/3.5.0/bin/python3

Y esto se refleja en which

$ which python
/usr/local/bin/python

Pero cuando lo uso, vuelve al python2.7 nativo

$ python --version
Python 2.7.10

¿Qué da? ¿OS X está jugando con mi $PATH y no me lo dice? ¿Qué pasos puedo seguir para asegurarme de saber qué comando se ejecutará realmente?

    
pregunta JeremyKun 31.10.2015 - 22:11

2 respuestas

2

Intenta cerrar la ventana de tu terminal y hacer una nueva. El shell solo verifica en realidad dónde se encuentran los comandos en el inicio, y no vuelve a verificar si cree que sabe dónde se encuentra el comando. Es un aumento de rendimiento en los scripts, por lo que generalmente es una buena idea.

    
respondido por el William T Froggard 01.11.2015 - 00:00
2

Si su shell es bash, entonces puede usar los componentes type y hash para manipular su caché de rutas ejecutables (como se muestra en ¿Cómo borro la caché de Bash de las rutas a los ejecutables? ):

# to clear the whole cache
hash -r

# to only remove one cached command
hash -d python
    
respondido por el D. Ray 22.12.2015 - 18:57

Lea otras preguntas en las etiquetas