Qualquer ocasião em que .bashrc é favorável a .bash_profile?

5

Compreendo a diferença entre .bashrc e .bash_profile (ou .bash_login e ~/.profile ), mas existe algum motivo específico para escolher .bashrc over .bash_profile para a configuração do shell bash?

Pelo que entendi, configurações como cores de terminal, variáveis ambientais, etc. em .bashrc serão recarregadas toda vez que uma nova janela bash for aberta. .bash_profile só será carregado uma vez no login, e acho que isso deve ser suficiente. Por que colocar algo em .bashrc então?

A única razão que posso pensar é evitar ter que sair do sistema para que uma configuração seja carregada.

Não consegui encontrar uma resposta além de razões puramente convencionais.

    
por SamuelN 15.11.2017 / 22:41

2 respostas

5

Opções de shell (de shopt ou set ) não são herdados através do ambiente. Também não são aliases . Se você quiser, por exemplo, ativar failglob para todos os seus shells, isso precisa estar no arquivo RC. Um alias pode ser substituído por uma função exportada, mas não há solução alternativa para as opções.

Ele também é convencional & incentivados pelo manual a ter .bash_profile source .bashrc , então essas configurações que você colocar lá serão carregadas em shells de login e não-lógicas. Se eles estão apenas em .bash_profile , eles podem nunca ser carregados em um shell que você realmente usa.

Outra situação é onde você tem uma configuração mais complexa com o código executável real (por exemplo, alguns recursos avançados PROMPT_COMMAND ) e deseja que as variáveis recém-inicializadas sejam usadas em cada shell. Você provavelmente não desejaria essas variáveis exportadas, ou talvez elas sejam matrizes e não podem ser.

Um último caso seria para a execução de comandos de efeitos colaterais: exibindo fortune ou uma lista de tarefas em cada novo shell. Isso não é muito "configuração", mas está configurando seu comportamento de shell.

Há também o caso mais geral em que bash não é invocado como shell de login (porque seu gerenciador de sessão faz outra coisa, ou não é seu shell de login ou ...) e seu .bash_profile seria nunca será processado. Isso pode estar fora do escopo para sua preocupação.

    
por 15.11.2017 / 23:20
1

Quaisquer funções ou aliases que você definir não estarão disponíveis em shells filho se você as definir apenas nos arquivos profile .

Você pode recarregar esses arquivos usando o comando source sem ter que efetuar logout, mas isso pode mangle o PATH um pouco se ele tiver sido modificado. . sozinho é um apelido para source , mas às vezes ele é remapeado por sysadmins (não tenho certeza do motivo).

É também por isso que você precisa executar o comando source para criar funções e aliases no shell em execução, porque a execução do script por si só criará um novo shell, em seguida, os criará nesse shell e não no shell ' re usando.

    
por 15.11.2017 / 23:20