Utilities
如何確定將執行我路徑上的哪個執行檔?
我執行
which
並得到以下資訊,brendan$ which python /opt/local/bin/python brendan$ which -a python /opt/local/bin/python /usr/bin/python brendan$ ls -l /opt/local/bin/python lrwxr-xr-x 1 root admin 24 22 Jul 00:45 /opt/local/bin/python -> /opt/local/bin/python2.4 brendan$ python Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) ... (this is the python version in /usr/local/bin)
我的觀點是,
which
沒有告訴我主要的執行檔,即優先執行的那個。我怎麼知道這個?我在 Macbook 上執行 OSX 10.6,儘管這個問題對於類 UNIX 來說是普遍的。
**更新:**我已經在我的系統上刪除了許多冗餘版本的 Python(我至少有六個),並
PATH
在一堆初始化文件中刪除了各種粗糙的聲明。在這個過程中,不知何故,一個新的 shell 現在顯示了預期的輸出(即which
顯示/opt/local/bin/python
,這就是執行的內容)。無論如何,感謝您的幫助!
當你沒有執行時得到輸出
which
的-a
就是將被執行的那個。(並且第二個 with-a
優於第三個)。這沒有考慮在任何其他執行檔之前(從 shell 中)執行的 shell 的內置函式、別名和函式。
因此,最好改為使用
type
。
僅顯示的那個
which python
是您的控制台將使用的那個,除非您將 python 別名為其他東西 (alias python='/usr/bin/python'
)。