Встановлено sqlite3 v3.8, але mac-термінал все ще працює за замовчуванням стару версію 3.6


9

У мене працює Mac з ОС X 10.6.8, який попередньо встановлений із SQLite3 v3.6. Я встановив v3.8 за допомогою homebrew. Але коли я набираю "sqlite3" у своєму терміналі, він продовжує запускати стару попередньо встановлену версію. Будь-яка допомога?

Не впевнений, чи змінна PATH пов’язана з цим, але запуск echo $ PATH призводить до наступного: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

А НОВА версія SQLite3 знаходиться в наступному каталозі: / usr / local / Cellar / sqlite

Слід додати, що я також завантажив двійковий виконуваний файл на робочий стіл, і це працює, якщо я натискаю з робочого столу, але не працює з терміналу.

Будь-яка допомога буде дуже вдячна?

Відповіді:


2

$ ПАТ

Так, вам потрібно встановити свою PATHзмінну так:

$ 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

Цей рядок можна прочитати трохи складно, тому тут він розділений колонами, і кожен шлях знаходиться по своєму рядку:

$ 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

Це $PATHсписок каталогів, розділених кольорами ( :), який оболонка здійснює пошук по одній за одною, шукаючи те, що ви просто щойно набрали під запитом. Порядок має значення, якщо sqliteв декількох місцях відображається перший каталог, де він знайдеться, то звідки він звикне.

де розташовані речі?

Ви можете скористатися typeкомандою, щоб побачити, звідки походить конкретна програма.

Приклади

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

Ось я використовую його з -aперемикачем, який покаже всі події:

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

Це спрацювало! Дуже дякую. Я не знав, як додати кілька заявок до оператора. Тепер зрозуміло, що вони просто розділені ":"
BandfuzzAlex,

@ user46531 - радий, що ваша проблема була вирішена. Дякую за запитання.
slm

@ user46531 Хоча це працює, це неправильне рішення. дивіться мою відповідь.
strugee

11

Рішення slm насправді невірно (хоча воно є корисним). Під час використання Homebrew не слід додавати /usr/local/Cellar/*у свій $ PATH; замість того, що вам слід зробити, ви повинні додати /usr/local/binу свій $ PATH (що ви вже зробили), а потім позначити речі в льоху на /usr/local/bin. Оскільки це створено таким чином, Homebrew очевидно може зробити це досить легко для вас:

brew link sqlite

автоматично створить необхідні посилання. (Homebrew цього разу не робив це автоматично для вас, оскільки sqlite - це лише кег, тобто це потрібно робити вручну).

В якості побічної ноти / дружнього нагадування ніколи не слід додавати /usr/local/binдо системного шляху, а лише ваш шлях користувача. Це на випадок, якщо програми очікують, що Apple, наданий sqlite, але знайдуть версію Homebrew, спричиняючи проблеми.


1
Можливо, не гарна ідея. заварюйте посилання sqlite: "Попередження: sqlite - це лише кег і має бути пов'язано з --force"
Marcelo Cantos

Так - які негативні наслідки насильницького зв’язку? Що могло зламати? Вони дійсно повинні вказувати на це в попереджувальному повідомленні.
іконоборство
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.