Path

安裝了sqlite3 v3.8,但是mac終端預設還是執行老版本3.6

  • September 5, 2013

我有一台執行 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 提供的版本,從而導致問題。

引用自:https://unix.stackexchange.com/questions/89472