Consulta simples: Acabei de perceber que nunca vi um shebang em cima de um .bashrc
script, o que me leva a pensar que o sistema usa o shell padrão para obtê-lo no login ( ${SHELL}
). Estou pensando em razões pelas quais esse é o caso, ou seja, é considerado um mau hábito usar algo diferente do shell padrão para executar o script de login.
22
Respostas:
.bashrc
e NÃO.bash_profile
são scripts. São arquivos de configuração que são obtidos toda vez que são executados de duas maneiras:bash
A seção INVOCATION da página de manual do bash é relevante.
Você pode controlar quando eles são carregados pelas opções da linha de comando
--norc
e--noprofile
. Você também pode substituir o local de onde eles são carregados usando o--rcfile
comutador.Como outros já mencionaram, você pode imitar como esses arquivos são carregados através do uso do
source <file>
comando ou do uso do. <file>
comando.É melhor pensar nessa funcionalidade da seguinte maneira:
Métodos para invocar
Este tópico parece surgir de vez em quando, então aqui está uma pequena tabela de dicas sobre as várias maneiras de invocar
bash
e o que elas resultam. NOTA: Para ajudar, adicionei as mensagens "sourced $ HOME / .bashrc" e "sourced $ HOME / .bash_profile "nos respectivos arquivos.chamadas básicas
bash -i
bash -l
bash -il -ou- bash -li
bash -c "..cmd .."
NOTA: Observe que a
-c
opção não originou nenhum arquivo!desativando arquivos de configuração de serem lidos
bash --norc
bash --noprofile
bash --norc -i
bash --norc -l
bash --noprofile -i
bash --noprofile -l
bash --norc -i -ou- bash --norc -l
Maneiras mais esotéricas de chamar bash
bash --rcfile $ HOME / .bashrc
bash --norc --rcfile $ HOME / .bashrc
Estes falharam
bash -i -rcfile ~ / .bashrc
bash -i -rcfile .bashrc
Provavelmente há mais, mas você entendeu o ponto, espero ...
O quê mais?
Por fim, se você está tão entusiasmado com este tópico que gostaria de ler / explorar mais sobre ele, sugiro dar uma olhada no Bash Beginners Guide, especificamente na seção: 1.2. Vantagens do Bourne Again SHell . As várias subseções dessa seção, "1.2.2.1. Invocação" a "1.2.2.3.3. Comportamento interativo do shell", explicam as diferenças de baixo nível entre as várias maneiras de invocar
bash
.fonte
.bash_profile
inclua uma linha para a fonte.bashrc
. Mas acredito que isso seja muito típico de configurações..bashrc
e.bash_profile
não são scripts . IMHO, são scripts de finalidade específica, originados implicitamente durante a inicialização do bash ou explicitamente quando você precisa aplicar suas modificações. Eles não configuram apenas o ambiente bash (variáveis, funções, aliases ...) conforme o esperado dos arquivos de configuração. Eles podem executar qualquer ação como nos scripts comuns. Por exemplo, eles podem iniciar várias ações, como tarefas em segundo plano, gravar registros de log, inicializar alguns programas etc. De qualquer forma, obrigado pelo resumo detalhado!.bashrc
scripts são executados apenas porbash
si só. Eles não são independentes e não devem serexec
usados pelo sistema. (De fato, eles geralmente não são marcados como executáveis e, como você diz, eles não têm uma linha shebang.)Esses scripts devem ser
source
d, pois geralmente fazem coisas como alterar variáveis de ambiente ($PATH
por exemplo), que devem persistir após a conclusão do script. Portanto, seria realmente inútil tentar executar um em um subshell.fonte
Além das outras respostas, observe que, se você quiser, nada o proíbe de colocar um shebang no início desses arquivos de configuração.
Isso não prejudicaria o fornecimento de shell, pois o shebang será processado como um comentário regular, ou seja, ignorado.
Isso pode ajudar editores que usam realce de sintaxe para descobrir qual linguagem de programação é usada no arquivo.
Observe que alguns editores como esse
vim
fornecem maneiras alternativas, como modelines para o último. ou seja, você sempre pode colocar as linhas de modo no final do~/.bashrc
e~/.bash_profile
assim:fonte
.bash_profile
com uma recomendação do ShellCheck.Eu li isso em qualquer lugar, não sei exatamente onde, mas é verdade
fonte