Попробуйте добавить эту строку в ~/.vimrc
:
set shell=/bin/bash\ -i
Тогда vim
будет использовать интерактивную оболочку (-i
), которая по умолчанию читает ~/.bashrc
.См. :h shell
для получения дополнительной информации о shell
.
Я вижу, что это по сути то же самое, что предыдущие ответы, которые вы говорите, не работают.Пожалуйста, попробуйте следующий пример сеанса на вашем компьютере, чтобы увидеть, есть ли у вас аналогичные результаты (и опубликуйте какие-либо ошибки / расхождения с выводом, который вы видите в образце).не работает для начала, когда bash
просто запускается (т.е. не интерактивен и не входит в систему; по умолчанию для vim и большинства других целей), он читает любой файл, указанный в $BASH_ENV
:
When bash is started non-interactively, to run a shell script, for
example, it looks for the variable BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value as the name
of a file to read and execute. Bash behaves as if the following com‐
mand were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file
name.
Добавляя -i
, мы делаем оболочку интерактивной, и поэтому она читает ~/.bashrc
:
When an interactive shell that is not a login shell is started, bash
reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if
these files exist. This may be inhibited by using the --norc option.
The --rcfile file option will force bash to read and execute commands
from file instead of /etc/bash.bashrc and ~/.bashrc.
Файлы *profile
читаются при запуске оболочки входа в систему:
When bash is invoked as an interactive login shell, or as a non-inter‐
active shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable. The --noprofile option may be used when the
shell is started to inhibit this behavior.