As respostas às perguntas sobre SO e askubuntu , junto com a leitura (e leitura dos cabeçalhos) $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 reuni esses arquivos no /etc/
trabalho para todos os usuários, enquanto os arquivos $HOME
são específicos do usuário. Também recolho que .profile
é carregado no login enquanto .bashrc
carregado quando /bin/bash
é executado. Eu também entendo que programas diferentes têm arquivos de configurações diferentes (por exemplo, .Rprofile
para R). Mas eu gostaria de receber alguns esclarecimentos:
- Os arquivos
*rc
e são*profile
fundamentalmente diferentes? - Qual é o escopo desses arquivos (por exemplo, quais arquivos são usados com o Linux)
- Existe uma hierarquia (por exemplo,
.bashrc
substitui as variáveis definidas em.settings
) - Qual é uma boa referência para essa classe de arquivos? Para as opções nesses arquivos?
INVOCATION
seção emman bash
. Veja oFHS
artigo da wiki sobre sistemas de arquivos Linux. Isso lhe dará um bom começo e responderá a algumas dessas perguntas. Arquivos com um ponto anterior (.
) geralmente são específicos do usuário - eles residem no$HOME
diretório do usuário .Respostas:
A organização dos arquivos de configuração é muito menos uniforme do que suas perguntas parecem sugerir. Não há "classe", não há "hierarquia" e não há "czar de configuração" global nem comitê que decrete uma sintaxe comum ou outras generalizações limpas como as que você está procurando. Só há uma infinidade de aplicações separadas como
R
,bash
,screen
e para o ambiente desktop GNOME, todos os quais têm suas próprias maneiras de fazer as coisas, então você deve olhar para a documentação de cada programa individual para responder a quaisquer específicas perguntas sobre um determinado arquivo. Se parece ad-hoc, é porque é: a maioria dos softwares Unix / Linux disponíveis foi desenvolvida para diferentes propósitos por diferentes pessoas, que realizaram configurações ligeiramente diferentes.Para responder suas outras perguntas no sentido do sentido:
*rc
e*profile
não significa muito, então essa pergunta não pode ser realmente respondida. "rc" é apenas uma abreviação ou sufixo comumente usado para arquivos de configuração. Sua etimologia remonta aos tempos antigos (nos anos do computador) e provavelmente significa executar comandos (da runcom ). Só porque os aplicativos usam a mesma palavra não significa que eles concordam com as convenções. "profile" é 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
e.profile
, que pode ser usada por várias conchas diferentes (incluindo pelo menossh
ebash
). Existe algo chamado ambiente associado 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 de shell apropriados ou talvez pelos arquivos de configuração de qualquer ambiente gráfico de área de trabalho que você esteja usando. Também existem arquivos de configuração para "bibliotecas", como.inputrc
para readline e.gtkrc*
para GTK, que afetarão todos os aplicativos que usam 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
manual parabash
. Uma convenção geral em que você geralmente pode confiar é que as configurações do usuário$HOME
substituem a configuração em todo o sistema/etc
. Isso geralmente é realizado lendo o arquivo do usuário após o sistema, para que as configurações posteriores substituam as anteriores. No entanto, isso não é uma garantia e, para obter respostas definitivas, consulte a documentação do programa específico em uso.Não há "classe", pelo menos nenhuma geral o suficiente para abranger todos os arquivos que você listou na sua pergunta; portanto, a questão de uma referência para essa "classe" é discutível. Mais uma vez, consulte a documentação do programa específico que você está usando.
fonte
Eu acho que essa pergunta é muito ampla em muitos níveis, por exemplo, você está fazendo perguntas sobre pelo menos quatro programas diferentes em uma pergunta. Vou ver apenas a diferença entre os arquivos de configuração em
/etc
e$HOME
.Unix é um sistema operacional multi-usuário, isto significa muitas pessoas diferentes podem usar um sistema, usando
ssh
,telnet
, ouXorg
. Para fornecer uma configuração padronizada para seus usuários, você pode fornecer uma configuração em todo o sistema/etc/
; isso normalmente também é usado pela sua Distribuição para fornecer uma configuração global para, por exemplo,bash
ouscreen
.Por outro lado, alguns usuários desejam personalizar as configurações de seus programas por conta própria, como combinações de teclas, cores ou aparência. Isso é feito através do arquivo de configuração
$HOME
. Em resumo,/etc/
fornece uma configuração geral do sistema, enquanto os arquivos de configuração em $ HOME permitem que os usuários alterem / substituam a configuração geral do sistema.fonte
Parte da resposta vem deste post :
.bashrc
é um script de shell que o Bash executa sempre que é iniciado interativamente.Contraste
.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
vs,.bash_profile
dependendo se você deseja que ele seja executado uma vez ou para cada início de shell interativo.fonte