Estou tentando executar o ipython do bash (versão 4.4.19
) linha de comando .
Como desenvolvedor de Python, tenho várias instalações de ipython
em várias versões em vários caminhos de virtualenv
s e, portanto, é importante saber qual delas estou executando. Portanto, o $PATH
é sempre alterado quando eu altero virtualenv
, e esse seria um valor típico para PATH
:
$ echo $PATH
/Users/jab/.virtualenvs/tools/bin:/Users/jab/bin:/Users/jab/src/git/hub/jab/bin:/usr/local/gnu:/bin:/usr/local/bin:/usr/bin
O detalhe importante é que a primeira entrada é " /Users/jab/.virtualenvs/tools/bin
" e que o arquivo /Users/jab/.virtualenvs/tools/bin/ipython
existe:
$ ls -l /Users/jab/.virtualenvs/tools/bin/ipython
-rwxr-xr-x 1 jab staff 252 May 11 15:18 /Users/jab/.virtualenvs/tools/bin/ipython
Como esperado, which
diz que esse arquivo será executado como o comando " $ ipython
"
$ which ipython
/Users/jab/.virtualenvs/tools/bin/ipython
$ $(which ipython) -c "import sys; print(sys.executable)"
/Users/jab/.virtualenvs/tools/bin/python
No entanto, esse não é realmente o caso e /usr/local/bin/ipython
é executado em vez disso
$ ipython -c "import sys; print(sys.executable)"
/usr/local/bin/python3
Alguém pode explicar por que bash
está ignorando meu $PATH
e usando o executável "errado"? E o que eu preciso mudar (em my bashrc , ou no meu sistema ( macOS 10.12.3
)) para que os executáveis sejam escolhidos por bash na ordem determinada pelo meu $PATH
.
Observação: isso não é uma duplicação O Bash não está encontrando um programa, mesmo que esteja no meu caminho , porque ele pergunta como o PATH trabalha para encontrar qualquer programa, enquanto esta pergunta não é por que o errado programa é encontrado.