it-swarm-pt.tech

Qual é a diferença entre um shell bash de 'Login' e um 'Interactive'

Qual é a diferença entre um shell bash de 'Login' e um 'Interactive'? Citei a Wikipedia abaixo, mas alguém pode dar uma resposta melhor?

EDIT: Este é um wiki da comunidade, portanto, talvez em vez de votar para fechar, você pode fornecer exemplos de quais situações exigem que tipo de $ Shell

Scripts de inicialização

Quando o Bash é iniciado, ele executa os comandos em uma variedade de scripts diferentes.

Quando o Bash é chamado como um Shell de logon interativo, ele primeiro lê e executa comandos do arquivo/etc/profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura ~/.bash_profile, ~/.bash_login e ~/.profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível.

Quando um Shell de logon sai, o Bash lê e executa comandos do arquivo ~/.bash_logout, se existir.

Quando um Shell interativo que não é um Shell de login é iniciado, o Bash lê e executa comandos de ~/.bashrc, se esse arquivo existir. Isso pode ser inibido usando a opção --norc. A opção --rcfile file forçará o Bash a ler e executar comandos do arquivo em vez de ~/.bashrc.

50
Gareth

Nos arquivos de perfil do Shell de login, você pode configurar algumas coisas que você usará durante a sessão e que precisam ser feitas apenas uma vez. Algumas ideias:

  • crie um arquivo temporário contendo o endereço IP do qual você se conectou; posteriormente, você pode incluí-lo em alguns scripts que definem regras de firewall.
  • execute ssh-agent, solicite suas chaves SSH e armazene as variáveis ​​de ambiente do agente SSH em um arquivo.
  • se essa é uma máquina limitada e seus colegas de trabalho desejam conhecer os logins uns dos outros, escreva (1) mensagens informando sobre seu login.

Nos arquivos do Shell que não são de login (.bashrc) você deve configurar seu Shell:

  • Prompt extravagante
  • definir aliases
  • definir opções de histórico
  • definir funções personalizadas do Shell
  • exportar variáveis ​​de ambiente (talvez PAGER, EDITOR se as configurações do sistema forem ruins)
  • carregar variáveis ​​ssh-agent salvas em .bash_profile

Normalmente, você incluiria .bashrc de .bash_profile com o seguinte. Em seguida, faça login no Shell recebe todas as suas personalizações e .bash_profile O arquivo não precisa duplicar coisas que já estão em .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc
16
hayalci