Qual é a diferença entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc ...?

Qual é a diferença entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc ...?

Respostas às perguntas sobreENTÃOeaskubuntu, junto com vasculhar (e ler cabeçalhos de) $HOMEe /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 $HOMEsão específicos do usuário. Também deduzo que .profileé carregado no login e .bashrccarregado quando /bin/bashé executado. Também entendo que programas diferentes possuem arquivos de configurações diferentes (por exemplo, .Rprofilepara R). Mas gostaria de receber alguns esclarecimentos:

  • *rcOs arquivos e são *profilefundamentalmente diferentes?
  • Qual é o escopo de tais arquivos (por exemplo, quais arquivos são comumente usados ​​com Linux)
  • Existe uma hierarquia (por exemplo, .bashrcsubstitui 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, screene 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:

  • *rce *profilenã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/profileand .profile, que pode ser usada por vários shells diferentes (incluindo pelo menos shand bash). 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 .inputrcreadline 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, obashmanualpara bash. Uma convenção geral na qual você geralmente pode confiar é que as configurações do usuário $HOMEsubstituem 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 /etce $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, bashou 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_profilee .profileque são executados apenas no início de um novo shell de login. (bash -l)

Você escolhe se um comando entra .bashrcou .bash_profiledepende se deseja que ele seja executado uma vez ou a cada início do shell interativo.

informação relacionada