MacVim se comportando estranhamente com meus aliases (mesmo configurando shell = / bin / bash \ -l)

0

Eu queria escrever alguns scripts e fazer o MacVim chamar alguns comandos bash. Eu tenho alguns apelidos e queria que o vim pudesse chamá-los, então eu sabia que precisava de um shell de login, só não sabia como usar o vim.

Eu li isto: link (que não funcionou para o meu MacVim); e isto: link que parecia ser uma boa ideia.

Então eu abri meu .vimrc e coloquei isso em: set shell=/bin/bash\ -l .

Agora, algo muito estranho está acontecendo: eu tenho um alias no meu .bash_profile , assim:

alias mytest='echo "TEST!!"'

Meu .bashrc sources .bash_profile , portanto, sei que não deve ser uma questão de onde o alias está definido. Se eu entrar no vim e rodar: :! alias mytest

Eu vejo isto:

alias mytest='echo "TEST!!"'

Press ENTER or type command to continue

Se eu executar :! mytest , no entanto, é isso que recebo:

/bin/bash: mytest: command not found

shell returned 127

Press ENTER or type command to continue

Então, estou sem idéias sobre como isso pode estar acontecendo. Por que quando eu executo "alias" o alias está lá, mas quando eu executo o próprio alias, o bash não o reconhece?

Agradeço qualquer informação que alguém possa me dar sobre esse assunto.

Obrigado.

ATUALIZAÇÃO:

Eu agora tentei alterar minha linha .vimrc para:

set shell=/bin/bash\ -li

Para tornar o shell interativo, além de ser um shell de login, funcionou.

Então, eu mudo um pouco a minha pergunta: por que isso faz sentido? Pelo que entendi, um shell de login executa meu .bash_profile e, portanto, carrega meus aliases. Por que não é suficiente?

    
por malvim 07.04.2011 / 04:01

2 respostas

2

Os aliases são usados como abreviação do usuário, por isso só fazem sentido em shells interativos. Portanto, como a página man do bash diz: "Os aliases não são expandidos quando o shell não é interativo, a menos que o expand_aliases opção de shell é definida usando shopt (veja a descrição de shopt sob SHELL BUILTIN COMMANDS abaixo). " Eu suponho que você poderia adicionar shopt -s expand_aliases ao seu .bash_profile, mas isso pode causar um comportamento inesperado em outros tipos de shells não interativos ...

    
por 07.04.2011 / 08:04
0

Isso deve funcionar: :! bash -ic 'mytest; exit'

    
por 07.04.2011 / 12:30