Eu usei vários sistemas diferentes baseados em * nix dos anos e parece que todo tipo de Bash que eu uso tem um algoritmo diferente para decidir quais scripts de inicialização serão executados. Para fins de tarefas como configurar variáveis de ambiente e aliases e imprimir mensagens de inicialização (por exemplo, MOTDs), qual script de inicialização é o local apropriado para fazer isso?
Qual é a diferença entre colocar as coisas em .bashrc
, .bash_profile
e .environment
? Eu também vi outros arquivos, como .login
, .bash_login
, e .profile
; são sempre relevantes? Quais são as diferenças em quais são executadas ao efetuar o login fisicamente, efetuando login remotamente via ssh e abrindo uma nova janela de terminal? Existem diferenças significativas entre as plataformas (incluindo o Mac OS X (e seu Terminal.app) e o Cygwin Bash)?
fonte
/etc/bashrc
para preencher a resposta?Classicamente,
~/.profile
é usado pelo Bourne Shell e provavelmente é suportado pelo Bash como uma medida herdada. Novamente,~/.login
e~/.cshrc
foram usados pelo C Shell - não tenho certeza de que o Bash os use.O
~/.bash_profile
seria usado uma vez, no login. O~/.bashrc
script é lido toda vez que um shell é iniciado. Isso é análogo ao/.cshrc
C Shell.Uma conseqüência é que o material
~/.bashrc
deve ser o mais leve possível (mínimo) para reduzir a sobrecarga ao iniciar um shell que não é de login.Eu acredito que o
~/.environment
arquivo é um arquivo de compatibilidade para o Korn Shell.fonte
Encontrei informações sobre .bashrc e .bash_profile aqui para resumir:
Também há um acompanhamento completo de cada um dos arquivos de configuração aqui
Provavelmente, elas dependem da distribuição, nem todas as distribuições escolhem ter cada configuração com elas e algumas têm ainda mais. Mas quando eles têm o mesmo nome, geralmente incluem o mesmo conteúdo.
fonte
De acordo com Josh Staiger , o Terminal.app do Mac OS X realmente executa um shell de login em vez de um shell sem login por padrão para cada nova janela de terminal, chamando .bash_profile em vez de .bashrc.
Ele recomenda:
fonte
Um bom lugar para se olhar é a página de manual do bash. Aqui está uma versão online. Procure a seção "INVOCATION".
fonte
Eu usei distros da família Debian que parecem executar
.profile
, mas não.bash_profile
, enquanto os derivados RHEL executam.bash_profile
antes.profile
.Parece uma bagunça quando você precisa configurar variáveis de ambiente para funcionar em qualquer sistema operacional Linux.
fonte