2013-08-01 60 views
9

我正在尋找一種方法來枚舉我的PATH中第一個隱藏的可執行文件的所有副本。我能想出的最好的是一個功能:如何在PATH中找到可執行文件名的所有副本?

find_all_exec() { 
    for i in ${PATH//:/ }; do 
     find "$i/$1" 2> /dev/null 
    done 
} 

$ find_all_exec python 
/usr/local/bin/python 
/usr/bin/python 

這讓我我想要的(儘管它不處理的bash別名/功能type一樣)。我很好奇,如果有更多內置的方式?

回答

17

試試這個內置命令:

which -a python 
+0

感謝。正是我在找什麼。猜猜我應該RTFM多一點。 – weaver

+1

內置什麼外殼?不是bash版本4.2.45(1) - 釋放:'type which' - >'這是/ usr/bin/which'。對於bash:'type-python' –

+0

好點@glennjackman實際上'which'不是一個內建的命令,但正如你通常知道它與bash一起提供的。無論如何,'type -a'爲我提供了與我所期望的不同的輸出結果,僅顯示了存在於不同路徑中的可執行文件。你知道爲什麼嗎? –

1

我認爲這應該工作:

IFS=: 
for dir in $PATH; do 
    if [ -x "$dir/$1" ] 
    then echo "$dir/$1" 
    fi 
done 
相關問題