安裝了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
我應該補充一點,我還將二進制執行檔下載到我的桌面,如果我從我的桌面點擊,它可以工作,但不能從終端工作。
任何幫助將不勝感激?
$路徑
是的,您需要
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
slm 的解決方案實際上是不正確的(雖然可用)。使用 Homebrew 時,您不應添加
/usr/local/Cellar/*
到 $PATH; 相反,你應該做的是你應該添加/usr/local/bin
到你的 $PATH (你已經完成了),然後將 Cellar 中的東西符號連結到/usr/local/bin
. 由於它是這樣設計的,Homebrew 顯然可以很容易地為您做到這一點:brew link sqlite
將自動創建所需的連結。(這次 Homebrew 沒有自動為您執行此操作,因為 sqlite 僅適用於小桶,這意味著您需要手動執行此操作)。
作為旁注/友好提醒,您永遠不應該添加
/usr/local/bin
到系統路徑,只添加您的使用者路徑。這是為了以防程序期望 Apple 提供的 sqlite 但找到 Homebrew 提供的版本,從而導致問題。