sqlite3 v3.8을 설치했지만 기본적으로 Mac 터미널은 여전히 ​​이전 버전 3.6을 실행합니다.


9

SQLite3 v3.6이 사전 설치된 OS X 10.6.8을 실행하는 Mac이 있습니다. homebrew를 사용하여 v3.8을 설치했습니다. 그러나 터미널에 "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

예 당신은 당신의 설정해야합니다 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 September

11

slm의 솔루션은 실제로 올바르지 않습니다 (사용 가능한 동안). Homebrew를 사용할 때 /usr/local/Cellar/*$ PATH에 추가하면 안됩니다 . 대신 당신이해야 할 일은 /usr/local/bin$ PATH (이미 수행 한)에 추가 한 다음 Cellar의 항목을에 연결해야 /usr/local/bin합니다. 이런 식으로 설계되었으므로 Homebrew는 분명히 당신을 위해 이것을 쉽게 할 수 있습니다.

brew link sqlite

필요한 링크를 자동으로 생성합니다. sqlite는 술통 전용이기 때문에 Homebrew는이 작업을 자동으로 수행하지 않았습니다. 즉 수동으로해야합니다.

참고 / 친숙한 알림으로 /usr/local/bin시스템 경로에 사용자 경로 만 추가해서는 안됩니다 . 프로그램이 Apple에서 제공 한 sqlite를 예상하지만 Homebrew에서 제공 한 버전을 찾아 문제를 일으키는 경우입니다.


1
아마 좋은 생각이 아닙니다. brew link sqlite : "경고 : sqlite는 술통 전용이며 --force와 연결되어야합니다"
Marcelo Cantos

예 — 강제로 연결하면 부정적인 결과는 무엇입니까? 무엇을 깨뜨릴 수 있습니까? 그들은 실제로 경고 메시지에 표시해야합니다.
iconoclast
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.