Diferenças entre / usr / bin / login e / usr / bin / bash

1

O terminal.app tem o shell aberto com com o shell de login padrão (/ usr / bin / login) e Comando (caminho completo) (que por padrão contém opções / usr / bin / bash como caminho).

Fora da caixa, a opção que eu encontrar selecionada é Shell de login padrão (/ usr / bin / login) .

Qual é a diferença entre / usr / bin / login e / usr / bin / bash ? Qual deles deve ser escolhido como shell padrão?

    
por kiamlaluno 29.06.2010 / 04:11

5 respostas

4

Uma diferença prática está no modo como o ambiente de shell resultante lê suas configurações iniciais.

/ usr / bin / login bifurca um shell de login. Eu acho que ele invoca o processo de autenticação, mas você pode não ver nenhuma interação de autenticação visível se você já estiver logado. E, claro, se o seu login shell não for bash, o login irá invocá-lo em vez de bash.

bash é um shell que sabe se foi chamado como um shell de login ou não. Um shell de login bash lê .bash_profile ou .bash_login ou .profile - apenas um, nessa ordem de preferência. Um shell não-login não lerá um .profile, mas lerá a partir de .bashrc. Este é um comportamento bash normal nas modernas plataformas * nix, mas pode ser difícil detectar comportamentos estranhos se você não entender o que está acontecendo.

Por exemplo, você pode abrir um shell de "login" via Terminal e obter um conjunto de variáveis ambientais (digamos, do seu .profile), digitar "bash" e obter um conjunto completamente diferente de variáveis (do. bashrc, mais quaisquer variáveis que foram exportadas, menos aquelas que não foram). Em particular, o PATH pode ser mutilado com entradas repetidas ou ausentes.

    
por 16.02.2012 / 14:49
3

/ usr / bin / login não é um shell; é um programa usado para acessar um sistema. Ele gerencia o processo de login em um sistema. Como usuário de um sistema configurado adequadamente, você nunca deve se preocupar com / usr / bin / login. Se você está curioso sobre isso de qualquer maneira, leia

man login

Um shell é executado após o processo de login ser concluído. Ele fornece ao usuário uma interface de linha de comando baseada em texto para os recursos do sistema operacional, incluindo a execução de outros programas. / usr / bin / bash é uma boa opção para um shell padrão. Você pode ler mais sobre o bash executando

man bash

Ambos os comandos man podem ser executados no prompt do shell.

    
por 29.06.2010 / 04:34
1

Eles são duas coisas muito diferentes, e apenas uma coisa comum é que ambos geralmente são executados no início do loggin em um usuário e ambos executam um arquivo de ponto de configuração (.login e .bashrc) que são essencialmente shell scripts. Além disso, o bash, como muitos shells modernos, também permite alternar entre usuários, o que é um dos principais objetivos de login

Em detalhes:

login é um programa usado para entrar em um usuário, no final do qual o shell ( intérprete de linha de comando) é executado.

o login só sabe como fazer uma coisa - faça o login de um usuário (use o nome de usuário / senha, defina algumas variáveis ambientais como TERM e PATH, e execute algumas tarefas administrativas no login - veja o link para detalhes.

Um shell unix (do qual bash é um exemplo de) é uma linha de comando intérprete juntamente com um interpretador de scripts, e sua função é aceitar a entrada (do usuário ou fornecida programaticamente) e executar comandos solicitados.

Tanto quanto eu saiba, o login não pode ser usado como um shell , pois não tem nenhuma funcionalidade de um interpretador de linha de comando.

    
por 29.06.2010 / 05:06
0
% man login

 login  is  used  when  signing  onto  a system.  It can also be used to
   switch from one user to another at any time (most  modern  shells  have
   support for this feature built into them, however).


% man bash

  Bash  is  an  sh-compatible  command language interpreter that executes
   commands read from the standard input or from a file.

Então, se você tiver que escolher um shell dentre suas duas opções, é claramente bash.

    
por 29.06.2010 / 04:27
-1

/usr/bin/bash

Este é o kernel do Linux no Mac OS. Então eu acho que é quase o mesmo quando você pega o comando no linux. O shell padrão deve ser bash.

    
por 29.06.2010 / 04:20