tags:

views:

249

answers:

3

Whenever I start a shell in vim using :sh, it doesn't source my ~/.bashrc file. How can I get it to do this automatically?

+10  A: 

See :help 'shell'. You can set this string to include -l or --login, which will source your .bashrc file. So, you might have a line like this in your .vimrc:

set shell=bash\ --login

Note that this will alter everything that invokes the shell, including :!. This shouldn't be much of a problem, but you should be aware of it.

The value of this command can also be changed by setting the $SHELL environment variable.

jheddings
You're my hero. I had done :help sh in the past, unfortunately that doesn't tell you much.
Pierre-Antoine LaFayette
Glad to help... The docs do get a little hard to traverse.
jheddings
A: 

If it doesn't source your .bashrc file, it may still source your .bash_profile file. I usually make one of them a symlink to the other. If your .bashrc performs some particularly odd one-time operations, you may have to edit it to only perform those operations with a login shell, but I've never had problems with it.

qid
A: 

~/.vimrc

cmap sh<CR> !bash --login<CR>

If you quickly enter "sh<Enter>" in command-line, you can start bash with sourcing ~/.bashrc. So dirty.

hail2u
This problem has already been resolved in a clean way. No need to pollute our vimrc files with unnecessary mappings.
Pierre-Antoine LaFayette