我一直在寻找一种枚举可执行文件的所有副本的方法,这些副本被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
这可以得到我想要的东西(虽然它不像type
那样处理bash别名/函数)。我很好奇是否有更内置的方式?
答案 0 :(得分:30)
试试这个内置命令:
which -a python
答案 1 :(得分:2)
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
答案 2 :(得分:1)
我认为这应该有效:
IFS=:
for dir in $PATH; do
if [ -x "$dir/$1" ]
then echo "$dir/$1"
fi
done