30

我正在寻找一种方法来枚举可执行文件的所有副本,这些副本被我的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)。我很好奇是否有更内置的方式?

4

3 回答 3

49

试试这个内置命令:

which -a python
于 2013-08-01T16:37:43.533 回答
5
type -a *

例如,

type -a python

python is /Users/user1/anaconda3/bin/python
python is /usr/local/bin/python
python is /usr/bin/python
python is /Applications/CASA.app/Contents/MacOS/python
于 2020-04-18T01:53:54.230 回答
2

我认为这应该有效:

IFS=:
for dir in $PATH; do
    if [ -x "$dir/$1" ]
    then echo "$dir/$1"
    fi
done
于 2013-08-01T16:38:28.313 回答