我有一台运行 OS X 10.6.8 的 Mac,它预装了 SQLite3 v3.6。我使用自制程序安装了 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
我应该补充一点,我还将二进制可执行文件下载到我的桌面上,如果我从桌面上单击,它就可以工作,但从终端上就不起作用。
任何帮助将不胜感激?
答案1
slm 的解决方案实际上是不正确的(虽然可用)。使用 Homebrew 时,不应将其添加/usr/local/Cellar/*
到 $PATH 中;相反,你应该做的是你应该添加/usr/local/bin
到你的 $PATH (你已经完成了),然后将 Cellar 中的东西符号链接到/usr/local/bin
.既然它是这样设计的,Homebrew 显然可以很容易地为你做到这一点:
brew link sqlite
将自动创建所需的链接。 (Homebrew 这次没有自动为您执行此操作,因为 sqlite 仅是 keg,这意味着您需要手动执行此操作)。
作为旁注/友好提醒,您永远不应该添加/usr/local/bin
到系统路径,而只能添加到您的用户路径。这是为了防止程序需要 Apple 提供的 sqlite 但找到 Homebrew 提供的版本,从而导致问题。
答案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
是一个目录列表 - 用冒号 ( :
) 分隔 - shell 会逐个搜索该目录,查找您刚刚在提示符下键入的内容。顺序很重要,因此如果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