Como saber quais são meus arquivos de inicialização para sh ou bash?

1

De esta pergunta Eu entendo que, dependendo do sistema operacional sh e bash se comportam de maneira diferente.

Fazendo env e alias posso dizer que:

Sempre que abro um Terminal OSX ou executo bash , a variável $SHELL=/bin/bash corre source ~/.profile , o que chama source ~/.bashrc . Se eu executar $sh , os comandos source ~/.profile nor source ~/.bashrc não serão chamados, portanto, nenhum dos aliases será definido.

Agora em um servidor Linux ou UNIX usando bash ou sh :

Como posso saber quais scripts são executados no login?

    
por ilciavo 21.07.2015 / 15:31

2 respostas

2

Primeiro, identifique seu shell, conforme observado em outra resposta, isso é feito simplesmente por meio do comando ps ...

$ ps
  PID TTY          TIME CMD
 3360 pts/2    00:00:00 bash
 3702 pts/2    00:00:00 ps

Para ter certeza de quais arquivos estão sendo lidos, você precisará investigar o sistema no qual está efetuando login. A shell 'bash' tem muitas opções 'se isto' então 'faça aquilo', do contrário 'faça outra coisa'. Para ver uma descrição completa de quais arquivos são originados, consulte aqui , mas tipicamente a lista é ...

  • / etc / profile
  • $ HOME / .bash_profile
  • $ HOME / .bashrc (se estiver configurado no .bash_profile)
  • $ HOME / .bash_logout (no logout, não no login)

Para o shell bourne ('sh'), ele geralmente é executado da seguinte maneira ao efetuar login

  • / etc / profile
  • $ HOME / .profile

O que eu gosto de fazer em sistemas com os quais não estou familiarizado é uma linha em qualquer arquivo de inicialização que eu esteja esperando ler, que testa se a saída padrão está conectada a um terminal e, se estiver, exibirá o nome do arquivo. Neste exemplo, estou usando-o no arquivo .bash_profile.

[ -t 1 ] && echo "reading .bash_profile"

Isso funciona tanto para o bash quanto para o sh (e alguns outros derivados também). Isso ajuda porque sei o que está sendo lido, quando e se estou recebendo erros, sei de qual arquivo eles vieram (erros antes da primeira mensagem ecoada são prováveis do próprio processo de login ou do sistema / etc / profile em todo o sistema.

Além disso, não se esqueça de que você sempre pode criar seus próprios arquivos de inicialização personalizados e incluí-los, incluindo-os em um arquivo que já está sendo fornecido.

    
por 21.07.2015 / 18:00
1
  1. /etc/passwd último campo do / etc / passwd irá dizer-lhe o seu shell loggin.
  2. ps executando o ps também informará (e nível de shell)

      PID TTY          TIME CMD
     5802 pts/0    00:00:00 bash
     6292 pts/0    00:00:00 ps
    
por 21.07.2015 / 16:07