Obrigado por toda sua grande ajuda.
Antes de dar a solução final, eu escolho, tenho que apontar um erro na minha pergunta original. Meu .cshrc original tem as seguintes três linhas:
bash
source ~/.bashrc
echo $0
Senti falta de digitar a segunda linha antes. Desculpe.
Agora, eu tentei esses dois métodos e os resultados são mostrados abaixo.
1) Método .vimrc
Se eu escrever
bash
source ~/.bashrc
echo $0
em ~ / .cshrc
e
set shell=/bin/bash
em ~ / .vimrc
sem nenhum arquivo ~ / .login, então vim e:! g ++ estão OK, mas:! gdb a.out tem algum erro. Além disso, "echo $ 0" dá "bash" mas "echo $ SHELL" dá "/ bin / tcsh". Eu não sei exatamente a diferença entre $ 0 e $ SHELL.
2) .login method
Se eu escrever
setenv SHELL /bin/bash
bash
source ~/.bashrc
echo $0
em .login
mas nem nada como "set shell = ..." em ~ / .vimrc nem "bash ..." em ~ / .cshrc, tudo está OK. Agora, "echo $ 0" dá "bash" e "echo $ SHELL" dá "/ bin / bash".
O bash na segunda linha pode ser substituído por "bash -l". Deve-se observar que, se eu substituí-lo por "exec bash" ou "exec bash -l", não poderei fazer login na minha conta. (O sistema automaticamente sai rapidamente.) Eu também não sei porquê.
Eu acho que o segundo método é ótimo. Eu agradeço muito sua ajuda.