I have anaconda set up with a few different environments. When I switch environments and open vim 8.2 and type :term
to launch a terminal window and type echo $PATH
, $PATH does not match what is shown in a terminal outside of vim. If instead just type :!echo $PATH
, it is correct
getting path from the terminal outside of vim:
(tensorflow_p36) ubuntu@ip-172-31-50-75:~$ echo $PATH
/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/anaconda3/bin:/home/ubuntu/anaconda3/condabin:/home/ubuntu/anaconda3/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/home/ubuntu/.dl_binaries/bin:/usr/local/mpi/bin:/opt/aws/neuron/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/opt/amazon/openmpi/bin:/opt/amazon/efa/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
getting path using :! echo $PATH
from vim command mode (matches $PATH above):
/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/anaconda3/bin:/home/ubuntu/anaconda3/condabin:/home/ubuntu/anaconda3/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/home/ubuntu/.dl_binaries/bin:/usr/local/mpi/bin:/opt/aws/neuron/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/opt/amazon/openmpi/bin:/opt/amazon/efa/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Press ENTER or type command to continue
Opening a terminal window within vim and checking $PATH (first 11 directories are duplicates that appear later in $PATH):
(tensorflow_p36) ubuntu@ip-172-31-50-75:~$ echo $PATH
/home/ubuntu/anaconda3/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/home/ubuntu/.dl_binaries/bin:/usr/local/mpi/bin:/opt/aws/neuron/bin:/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/anaconda3/bin:/home/ubuntu/anaconda3/condabin:/home/ubuntu/anaconda3/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/home/ubuntu/.dl_binaries/bin:/usr/local/mpi/bin:/opt/aws/neuron/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/opt/amazon/openmpi/bin:/opt/amazon/efa/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Trying to understand why $PATH within a vim terminal window has additional directories prepended...
bash
(or whatever shell you use). How does the PATH look like.man bash
and find the section namedINVOCATION
. It's also possible to configure vim to do something different on top of that (e.g. with the various'shell*
' settings). I don't know much about Anaconda but that might be adding additional variables to the mix. So your question as posed has more than one possible answer.