Experimente hash -d python
. Isso fará com que o bash esqueça onde viu pela última vez o executável python.
Eu quero usar python24 fornecido por portas, então eu instalei, e python_select -s
mostra que a versão que eu quero é de fato selecionada. A execução de which python
dá /opt/local/bin/python
e a execução de /opt/local/bin/python
fornece a versão desejada. No entanto, quando executo python
do shell, recebo a versão /usr/bin/python
. Eu não tenho um alias de python.
Aqui está a situação em poucas palavras:
which python
parece confirmar isso. alias
retorna apenas 1 entrada, o que é algo não relacionado a isso. No entanto, executar python
do shell bash me fornece o python errado!
Estou um pouco perplexo! O que eu estou negligenciando?
Talvez você tenha acabado de atualizar algo e sua instância do bash tenha informações antigas sobre executáveis. Experimente exec bash
.
Quando eu:
qqq
( /usr/bin/qqq
) em bash
. qqq
a /usr/local/bin/
. qqq
novamente no mesmo bash
. Ele usa a versão já pesquisada ( /usr/bin/qqq
)
No entanto, quando eu reinicio o bash, ele procura por qqq
novamente e recebe /usr/local/bin/qqq
.
Outra possibilidade é que o próprio script especifique qual executável do Python deve ser executado na primeira linha do script. Por exemplo, meu sistema tem o Python 2.6 e 2.7 instalado, e se a primeira linha é algo como:
#!/usr/bin/Python-2.6.8/bin/python
então eu pego o Python 2.6, apesar de 2.7 ser o padrão do sistema.
A maneira usual de especificar o padrão é:
#!/usr/bin/env python