如何在PATH中找到可执行文件名的所有副本?

wea*_*ver 20 bash 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
Run Code Online (Sandbox Code Playgroud)

这让我得到了我想要的东西(尽管它没有处理bash别名/函数type).我很好奇是否有更内置的方式?

Lor*_*con 32

试试这个内置命令:

which -a python
Run Code Online (Sandbox Code Playgroud)

  • 内置了什么外壳?不是bash版本4.2.45(1)-release:`type which` - >`这是/ usr/bin/which`.对于bash:`type -a python` (3认同)

CyT*_*Tex 7

type -a *
Run Code Online (Sandbox Code Playgroud)

例如,

type -a python
Run Code Online (Sandbox Code Playgroud)

给出

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
Run Code Online (Sandbox Code Playgroud)