Where does mix look for rebar?

Here’s my rebar info:

/elixir_programs/friends$ which rebar
/usr/local/bin/rebar

~/elixir_programs/friends$ rebar --version
rebar 2.6.4 19 20170625_072305 git 2.6.4-6-g2a52f60

~/elixir_programs/friends$ which rebar3
/usr/local/bin/rebar3

~/elixir_programs/friends$ rebar3 --version
rebar 3.0.0-beta.4+build.3189.ref21ae314 on Erlang/OTP 20 Erts 9.3

And here’s what my PATH looks like:

$ ruby -e "puts ENV['PATH'].split ':'"
/Users/7stud/.asdf/shims
/Users/7stud/.asdf/bin
/Users/7stud/.rvm/gems/ruby-2.4.0/bin
/Users/7stud/.rvm/gems/ruby-2.4.0@global/bin
/Users/7stud/.rvm/rubies/ruby-2.4.0/bin
/opt/local/bin
/opt/local/sbin
/Library/Frameworks/Python.framework/Versions/3.6/bin
/Users/7stud/.evm/erlang_versions/otp_src_20.2/bin
/usr/local/mysql/bin
/usr/local/bin/mongodb-osx-x86_64-3.0.7/bin
/Users/7stud/.local/bin
/Users/7stud/perl5/perlbrew/bin
/Users/7stud/perl5/perlbrew/perls/perl-5.20.2/bin
/Users/7stud/.nvm/versions/node/v9.4.0/bin
/usr/local/bin
/Library/Frameworks/Python.framework/Versions/2.7/bin
/Library/Frameworks/Python.framework/Versions/3.4/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/go/bin
/usr/local/MacGPG2/bin
/Applications/Wireshark.app/Contents/MacOS
/usr/local/git/bin
/usr/local/go/bin
//Users/7stud/go_programs/bin
/Applications/Rakudo/bin
/Applications/Rakudo/share/perl6/site/bin
/Users/7stud/.rvm/bin

I’m following the “Getting Started” tutorial for Ecto, and it says to issue this command:

 $ mix ecto.gen.repo -r Friends.Repo

Here’s what I get:

~/elixir_programs/friends$ mix ecto.gen.repo -r Friends.Repo
Could not find "rebar", which is needed to build dependency :poolboy
I can install a local copy which is just used by Mix
Shall I install rebar? (if running non-interactively, use "mix local.rebar --force") [Yn]

Why can’t mix find my rebar? Is it better practice to let mix install its own version of rebar?

Mix uses its own copy of rebar placed in $MIX_HOME/rebar and $MIX_HOME/rebar3, by default $MIX_HOME is ~/.mix. This is done, so that we can verify a concrete version of rebar works fine with mix and does not have any bugs - in case such bugs are discovered, it’s also easier to update. It removes one variable (version of rebar) when debugging issues with mix.

Thanks for the response.

Then why does the mix output say

Based on what you are saying, the mix message should be:

Could not find Mix’s copy of rebar. Mix needs its own rebar. Should I install a local copy of rebar which is just used by Mix?