Questão Qual arquivo é usado durante o login no Unix?


Quando você efetua login em um shell em um sistema Unix, geralmente há alguns arquivos executados em seu diretório inicial. Você os usaria para, por exemplo, configurar aliases e adições ao seu $PATH.

Mas, como sei exatamente qual arquivo é esse? Como faço para descobrir exatamente qual arquivo eu preciso editar (ou adicionar)?

Eu estou atrás de uma maneira genérica que posso usar em qualquer sistema Unix. Digamos que tudo o que você tem que começar é um endereço IP / nome de host e um nome de usuário e senha para um login SSH. Você se conecta e faz o login. Agora, o que você faz?


4


origem


Depende do seu shell. Para bash, veja man bash seção Invocation. - ott--


Respostas:


O perfil geralmente é executado em cada login. O arquivo de login do sistema é /etc/profile e os arquivos específicos do usuário são geralmente ~/.profile. Algumas shells têm seu próprio perfil e arquivos rc, por exemplo, o bash .bashrc que é executado por shells bash não-login e .bash_profile que é executado por shells bash de login. O sistema bashrc do sistema é /etc/bash.bashrc

Assim, você usaria .profile para coisas que devem ser executadas por shells de login e .bashrc (ou um equivalente) para coisas que devem ser executadas por shells não-login (aliases, configurando o env e similares)


clarificação de bash:

Existem dois tipos de shells: shells de login e não-login. Um shell de login é o shell executado quando um usuário faz o login. Shells não-login são todos os outros shells. Por exemplo, quando você faz login via ssh ou em um console, o shell que você recebe é um shell de login.

Os shell de login do bash são executados na inicialização:

  • /etc/profile
  • O primeiro arquivo existente do seguinte: ~/.bash_profile, ~/.bash_login, ~/.profile

os shells interativos não-login do bash são executados na inicialização:

  • /etc/bash.bashrc
  • ~/.bashrc

Em alguns (mais?) Unices que vêm com bash, as origens do profile ~/.bashrc, assim ~/.bashrc é executado para as duas camadas interativas de login e não-login.

Se um arquivo não existir, ele será ignorado.


8



Então não há como ver exatamente qual arquivo (s)? Eu só tenho que saber o que pode ser provável? Por exemplo, neste caso, o shell parece ser bash e uname retorna SunOS. Mas não há .bash_profile ou .bashrc. tem .profile, local.profile, local.login, local.cshrc. O que eu uso? Os arquivos que você mencionou simplesmente estão faltando e eu deveria criá-los? Ou eles não seriam lidos e eu preciso usar um desses já aqui? Além disso, qual é a diferença entre os shells de login e todos os shells? - Svish
Para bash, você usaria .bashrc e .bash_profile ou.profile. eu não sei o que local.profile, local.login e local.cshrc mas o último é mais provavelmente específico do csh. - user49740
Então, para fazer uma mudança "global" para $ PATH, por exemplo, eu teria que adicionar minha alteração a ambos ~/.bashrc  e um de ~/.bash_profile, ~/.bash_login e ~/.profile? - Svish
Se "global" significa "para este usuário", então sim. No entanto, o perfil geralmente origina ~/.bashrc, então adicionando a mudança para ~/.bashrc seria o suficiente. - user49740