从我的测试中可以清楚地看到,在打开新的终端缓冲区时,nvim并没有提供你的.bash_profile。我想在每次创建新的终端缓冲区时强制执行此操作。
要确认此行为:
ISSOURCED
echo $ISSOURCED
我还检查过bash是否以交互模式运行(确实如此),执行if tty -s; then echo interactive; fi
,基于this answer
然而,基于this answer执行shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'
,它不是登录shell。这意味着它通常会来源$HOME/.bashrc
。不幸的是,我将我的bashrc保存在不同的位置并从我的.bash_profile中获取,因此它不会被接收。
请参阅下面的答案,了解我目前的解决方法以及有关其不太理想的原因的信息。
答案 0 :(得分:0)
我设置了一个映射来打开一个新的终端:
nnoremap <leader>z :new<CR>:terminal<CR>
要获取我的.bash_profile,我将其更改为:
nnoremap <leader>z :new<CR>:terminal<CR>source $HOME/.bash_profile<CR>c<CR>
此解决方案的问题是,如果您尝试以除此映射之外的任何方式打开终端缓冲区,它会中断
答案 1 :(得分:0)
将此添加到您的~/.vimrc
:
set shell=bash\ -l
在使用-l
(--login
)进行调用时,bash在启动时(以及其他文件中)会读取~/.profile
,因此所有从那里获取的信息。
在使用-i
(--interactive
)进行调用时,bash在启动时(以及其他文件中)会读取~/.bashrc
,因此所有从那里获取的信息。
$ man bash
或:h shell
和:h shellcmdflag
了解更多信息。