Respostas às perguntas sobreENTÃOeaskubuntu, junto com vasculhar (e ler cabeçalhos de) $HOME
e /etc/
, indicam vários arquivos que podem ser usados para definir variáveis de ambiente, incluindo:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Eu entendo que os arquivos /etc/
funcionam para todos os usuários, enquanto os arquivos $HOME
são específicos do usuário. Também deduzo que .profile
é carregado no login e .bashrc
carregado quando /bin/bash
é executado. Também entendo que programas diferentes possuem arquivos de configurações diferentes (por exemplo, .Rprofile
para R). Mas gostaria de receber alguns esclarecimentos:
*rc
Os arquivos e são*profile
fundamentalmente diferentes?- Qual é o escopo de tais arquivos (por exemplo, quais arquivos são comumente usados com Linux)
- Existe uma hierarquia (por exemplo,
.bashrc
substitui variáveis definidas em.settings
) - Qual é uma boa referência para esta classe de arquivos? Para as opções nesses arquivos?
Perguntas vinculadas
Responder1
A organização dos arquivos de configuração é muito menos uniforme do que suas perguntas parecem sugerir. Não existe "classe", não existe "hierarquia" e não existe um "czar de configuração" global nem um comitê que decrete uma sintaxe comum ou outras generalizações limpas e agradáveis como as que você está procurando. Há apenas uma infinidade de aplicativos separados R
, como bash
, screen
e o ambiente de área de trabalho GNOME, todos com suas próprias maneiras de fazer as coisas, então você deve consultar a documentação de cada programa individual para responder a qualquer dúvida.específicoperguntas sobre um arquivo específico. Se parece ad-hoc, é porque é: a maioria dos softwares Unix/Linux existentes no mercado foram desenvolvidos para finalidades diferentes por pessoas diferentes, que realizaram a configuração de maneira um pouco diferente.
Para responder às suas outras perguntas pontualmente:
*rc
e*profile
não significa muito, então esta pergunta não pode ser respondida. "rc" é apenas uma abreviatura ou sufixo comumente usado para arquivos de configuração. Sua etimologia remonta aos tempos antigos (nos anos da informática) e provavelmente significa executar comandos (deruncom). Só porque os aplicativos usam a mesma palavra não significa que concordem com as convenções. "perfil" é um sufixo muito menos comum.Defina "escopo". A maioria dos aplicativos não compartilha arquivos de configuração com outros aplicativos não relacionados. A única exceção possível é
/etc/profile
and.profile
, que pode ser usada por vários shells diferentes (incluindo pelo menossh
andbash
). Existe algo chamadoambienteassociado a todo processo em execução que pode conter variáveis que podem afetar o comportamento desse processo. Geralmente, as variáveis de ambiente são definidas pelos arquivos de configuração do shell apropriados ou talvez pelos arquivos de configuração de qualquer ambiente gráfico de área de trabalho que você esteja usando. Existem também arquivos de configuração para "bibliotecas", como.inputrc
readline e.gtkrc*
GTK, que afetarão todos os aplicativos que utilizam a biblioteca.Não, não há hierarquia global para arquivos de configuração. Novamente, consulte a documentação do programa específico em questão, por exemplo, o
bash
manualparabash
. Uma convenção geral na qual você geralmente pode confiar é que as configurações do usuário$HOME
substituem a configuração de todo o sistema no/etc
. Isso normalmente é feito lendo o arquivo do usuário após o do sistema, para que as configurações posteriores substituam as anteriores. No entanto, isso não é uma garantia e, para obter respostas definitivas, você deve consultar a documentação do programa específico que está usando.Não existe uma "classe", pelo menos nenhuma geral o suficiente para abranger todos os arquivos listados na sua pergunta, portanto, a questão de uma referência para tal "classe" é discutível. Novamente, consulte a documentação do programa específico que você está usando.
Responder2
Eu acho que esta questão é muito ampla em muitos níveis, por exemplo, você está fazendo perguntas sobre pelo menosquatroprogramas diferentes em uma pergunta. Verei apenas a diferença entre os arquivos de configuração em /etc
e $HOME
.
Unix é um sistema operacional multiusuário, isso significa que muitas pessoas diferentes podem usar um sistema, seja usando ssh
, telnet
, ou Xorg
. Para fornecer uma configuração padronizada para seus usuários, você pode fornecer uma configuração para todo o sistema no . /etc/
Isso normalmente também é usado pela sua distribuição para fornecer uma configuração global para, por exemplo, bash
ou screen
.
Por outro lado, alguns usuários desejam personalizar as configurações de seus programas por conta própria, como atalhos de teclado, cores ou aparência. Isso é feito através do arquivo de configuração em seu arquivo $HOME
. Resumindo, /etc/
fornece configuração de todo o sistema, enquanto os arquivos de configuração em $HOME permitem que os usuários alterem/substituam a configuração de todo o sistema.
Responder3
Parte da resposta vemesta postagem:
.bashrc
é um script de shell que o Bash executa sempre que é iniciado de forma interativa.
Contrast .bash_profile
e .profile
que são executados apenas no início de um novo shell de login. (bash -l)
Você escolhe se um comando entra .bashrc
ou .bash_profile
depende se deseja que ele seja executado uma vez ou a cada início do shell interativo.