> On Jun 1, 2023, at 6:18 PM, Joshua Root <j...@macports.org> wrote:
> 
> Ken Cunningham wrote:
> 
>> what you see is difficult to explain, unless the PATH changed between the 
>> two tests.
>> 
>> if
>> 
>> 'which gcc' gives /opt/local/bin/gcc
>> 
>> then
>> 
>> gcc --version
>> 
>> should give exactly the same as
>> 
>> /opt/local/bin/gcc --version
> 
> Not necessarily. Shells cache command locations, so if 'gcc' was run prior to 
> the creation of /opt/local/bin/gcc, subsequently invocations will continue to 
> run the previously found gcc. Running 'hash -r' or starting a new shell will 
> give you an empty cache and thus set things right.
> 
> The 'which' command doesn't know about the shell's cache state; it only looks 
> at the current PATH. This is why 'type' often helps to understand what's 
> going on in these situations, as Richard hinted.
> 
> - Josh
> 

You have probably already noted that which and type are both built in to the 
default zsh on Ventura and as far as I can tell from my testing here give 
identical results in every case. Both correctly predict the binary that will be 
executed in every case I tried.

What will happen when you add and remove binaries from an upstream PATH folder 
is a bit difficult to predict accurately. I won't try to summarize the findings 
only to have someone point out their idea of an exception, but it's fair to say 
that it's best to open a new shell to get predictable results.

K

Reply via email to