安装了sqlite3 v3.8,但mac终端默认仍然运行旧版本3.6

安装了sqlite3 v3.8,但mac终端默认仍然运行旧版本3.6

我有一台运行 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

相关内容