Sourcing .bash_profile from .bashrc breaks macvim shell

bashitermterminal

I read Why doesn't .bashrc run automatically? about sourcing .bash_profile from .bashrc and adjusted my config to match this. I am using iTerm2 as my terminal.

Unfortunately, when I do this, my MacVim shell breaks – backspace doesn't work and I have strange characters all over the place. Note the characters?1034h before the prompt and the K that appears when hitting the backspace key.

enter image description here

My .bash_profile:

source ~/.bashrc

My .bashrc:

alias ll='ls -al'
# Set CLICOLOR if you want Ansi Colors in iTerm2
export CLICOLOR=1

# Set colors to match iTerm2 Terminal Colors
export TERM=xterm-256color

If copy the settings from .bashrc into .bash_profile and delete .bashrc then the shell in MacVim works fine.

Any idea why MacVim shell breaks sourcing .bash_profile from .bashrc?

Best Answer

According to https://stackoverflow.com/questions/11676026/macvim-shell-sh-only-displays-character-codes-escape-sequences the initial ?1034h characters are the colour codes I've set up in my .bashrc.

When calling echo $TERM from macvim the result is dumb. It looks like the terminal is unable to interpret certain escape sequences.

Details on how to adjust the .bashrc to accommodate (taken from https://stackoverflow.com/a/11676355/783836):

If you would like to use a color prompt on the command line, but not in MacVim you can fix this in ~/.bashrc by setting PS1 differently when inside vim (from [here][1])

if [ $VIM ]; then
        export PS1='\h:\w\$ '
fi