bash
não será originado .bashrc
de um terminal interativo, a menos que eu execute manualmente bash
a partir de um terminal:
$ bash
ou obtenha-o manualmente:
$ source ./.bashrc
ou em execução:
$ st -e bash
Aqui estão alguns resultados úteis, espero:
$ echo $TERM
st-256color
$ echo $SHELL
/bin/sh
$ readlink /bin/sh
bash
$ shopt login_shell
login_shell off
Estou no CRUX Linux 3.0 e uso dwm
e st
. Já tentei usar .bash_profile
e .profile
sem sucesso.
Alguma ideia?
Responder1
Em .bash_profile certifique-se de ter o seguinte:
# .bash_profile
# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
. ~/.profile
fi
# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
. ~/.bashrc
fi
Responder2
Por que isso seria fonte? Seu shell padrão não é bash, mas sh
:
$ echo $SHELL
/bin/sh
Na maioria dos sistemas modernos, sh
é um link simbólico para um shell básico. No meu Debian, por exemplo:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
No seu caso, sh
é um link para bash
mas, conforme explicado em man bash
:
Se o bash for invocado com o nome sh, ele tentará imitar o comportamento de inicialização das versões históricas do sh o mais próximo possível, ao mesmo tempo em que também está em conformidade com o padrão POSIX. [...] Quando invocado como um shell interativo com o nome sh, o bash procura a variável ENV, expande seu valor se estiver definido e usa o valor expandido como o nome de um arquivo para ler e executar. Desdeum shell invocado como sh não tenta ler e executar comandos de nenhum outro arquivo de inicialização, a opção --rcfile não tem efeito.
e
--norc
Não leia e execute o arquivo de inicialização de todo o sistema /etc/bash.bashrc e o arquivo de inicialização pessoal ~/.bashrc se o shell for interativo. Esta opção está ativada por padrão se o shell for invocado como sh.
Então, como seu shell padrão é sh
, .bashrc
não é lido. Basta definir seu shell padrão para bash usando chsh -s /bin/bash
.