Instalado o sqlite3 v3.8, mas o terminal mac ainda roda a versão antiga 3.6 por padrão

8

Eu tenho um Mac executando o OS X 10.6.8, que vem pré-instalado com o SQLite3 v3.6. Eu instalei v3.8 usando homebrew. Mas quando eu digito "sqlite3" no meu terminal, ele continua a executar a versão antiga pré-instalada. Alguma ajuda?

Não tenho certeza se a variável PATH tem algo a ver com isso, mas a execução de echo $ PATH resulta no seguinte: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/ bin

E a nova versão do SQLite3 está no seguinte diretório: / usr / local / adega / sqlite

Devo acrescentar que também baixei o executável binário para a minha área de trabalho, e isso funciona se eu clicar na área de trabalho, mas não funcionar no terminal.

Qualquer ajuda seria muito apreciada?

    
por BandfuzzAlex 05.09.2013 / 02:27

2 respostas

1

$ PATH

Sim, você precisa definir sua variável PATH da seguinte forma:

$ export PATH=/usr/local/Cellar/sqlite:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Essa linha pode ser um pouco difícil de ler, então aqui ela é dividida pelos dois pontos, e cada caminho está na sua própria linha:

$ awk -v addPath="$1" 'BEGIN{RS=":";ORS=addPath "\n"}{$1=$1}1' <<< $PATH
/usr/local/Cellar/sqlite
/usr/local/bin
/Library/Frameworks/Python.framework/Versions/2.7/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/X11/bin

O $PATH é uma lista de diretórios - separados por dois pontos ( : ) - que o shell pesquisa um por um procurando o que você acabou de digitar no prompt. A ordem é importante, portanto, se sqlite aparecer em vários locais, o primeiro diretório onde ela é encontrada é onde ela será usada.

onde estão as coisas localizadas?

Você pode usar o comando type para ver de onde um determinado aplicativo está vindo.

Exemplos

$ type -a sqlite3 
sqlite3 is /usr/bin/sqlite3

Aqui estou usando o comutador -a , que mostra todas as ocorrências:

$ type -a ls
ls is aliased to 'ls --color=auto'
ls is /bin/ls
    
por 05.09.2013 / 02:53
10

A solução do slm está incorreta (enquanto utilizável). Ao usar o Homebrew você não deve adicionar /usr/local/Cellar/* em seu $ PATH; em vez disso, o que você deve fazer é adicionar /usr/local/bin ao seu $ PATH (que você já fez) e então ligar simbolicamente as coisas na Adega em /usr/local/bin . Como ele é projetado dessa maneira, o Homebrew obviamente pode fazer isso facilmente:

brew link sqlite

criará automaticamente os links necessários. (O Homebrew não fez isso automaticamente para você desta vez porque o sqlite é apenas para o keg, o que significa que você precisa fazer isso manualmente).

Como nota lateral / lembrete amigável, você nunca deve adicionar /usr/local/bin ao caminho do sistema, apenas ao caminho do usuário. Isso ocorre caso os programas esperem o sqlite fornecido pela Apple, mas encontrem a versão fornecida pelo Homebrew, causando problemas.

    
por 05.09.2013 / 08:45

Tags