在vim中获取.bashrc文件不会更新PATH变量。
这是情景:
echo "export PATH=\$PATH:/home/xyz/abc/polyglot/bin" >> ~/.bashrc
在一个终端上将新PATH导出到.bashrc,然后关闭终端。:! source ~/.bashrc
。它毫无怨言地来源。! echo $PATH
。 PATH变量不反映更新的更改。如果我打开一个新终端并echo $PATH
,它会显示更新的值,这是预期的。但无论我在vim中使用.bashrc多少次,该变量都不会更新。有人可以解释这种行为吗?
答案 0 :(得分:4)
每次使用vim
从:!
内部执行shell命令时,vim
都会创建一个新的子shell环境。命令完成后,子shell终止,其所有环境都消失。
因此,创建新shell并在该shell中设置PATH
的时间并不重要;它只是用来执行echo
计数的那个,而且在那个,你还没有找到你的个人资料。
最简单的解决方案是在启动vim
之前获取您的个人资料,以便创建的子广告vim
将继承$PATH
。
顺便说一下,.bashrc
通常仅用于交互式 bash shell,而vim
创建的shell不是交互式的。 vim
使用bash -c
来调用shell并传递一个字符串来执行,尽管精确的调用由shell
和shellcmdflag
变量控制。特别是,如果您通过向vim
中的选项添加-l
来告诉shellcmdflag
创建登录shell,则bash shell将自动生成~/.bash_profile
(或{{1}如果~/.profile
不存在);这通常是放置环境设置的更有用的地方。
答案 1 :(得分:4)
rici声明的所有内容都是正确的。但是,解决方案实际上很简单:如果在调用Vim之前无法设置PATH,Vim允许您直接编辑当前环境。
:let $PATH=$PATH.":/home/xyz/abc/polyglot/bin"
因此,如果您需要新路径,请将其写入Vimscript文件并从那里开始,而不是采购.bashrc
。