2013-08-01 17 views
9

PATH numaramda ilk kez gölgelenen bir yürütülebilir dosyanın tüm kopyalarını numaralandırmanın bir yolunu arıyordum.Yürütülebilir bir adın tüm kopyalarını PATH sayfamda nasıl bulabilirim?

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 

Bu benim (type yaptığı gibi o bash diğer adları/fonksiyonları işlemez rağmen) istediğini bana alır: Birlikte gelen en iyi bir işlevdir. Daha yerleşik bir yol var mı merak ettim?

which -a python 

cevap

17

bu builtin komutunu deneyin. Tam olarak aradığım şey. Sanırım RTFM biraz daha fazla.
+0

Teşekkür – weaver

+1

Hangi kabuk içine yerleştirilmiş? Bash sürümü değil 4.2.45 (1) -sevir: 'türünü '- hangi'/usr/bin/olan '' '. Bash için: 'python' –

+0

iyi nokta @glennjackman aslında 'hangi' bir yerleşik komut değil, ama bildiğiniz gibi genellikle bash ile birlikte sağlanır. Her neyse, '-a' türü bana beklediklerimden farklı bir çıktı sağlar, bana sadece farklı yollarda var olan bir yürütülebilir dosyayı gösterir. Neden biliyor musun? –

1

Ben bu işe gerektiğini düşünüyorum:

IFS=: 
for dir in $PATH; do 
    if [ -x "$dir/$1" ] 
    then echo "$dir/$1" 
    fi 
done 
İlgili konular