Utilities

如何確定將執行我路徑上的哪個執行檔?

  • July 22, 2011

我執行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')。

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