Qual é a diferença entre shells interativos, shells de login, shell de não-login e seus casos de uso? [duplicado]

75

Eu tenho visto o / etc / profile. bash.bashrc para ver como eles são executados, e observe que alguns são executados por shells não-login, alguns trabalham com shells interativas, etc.

Quais são as diferenças neste tipo de projéteis, ou seja, interativo & não interativo, login & não-login etc?

A pergunta pode ser bem básica, mas parece que eu preciso perguntar o que é uma casca, em primeiro lugar. O que é um shell, qual é a sua relevância, como você o usa e por que existe para começar?

Atualização: Para entender melhor a intenção da pergunta, o que preciso entender, além das definições, são os casos de uso de um tipo de shell ou de outro. São os casos de uso que ajudam na compreensão, não apenas nas definições do dicionário.

    
por vfclists 11.10.2012 / 17:42

2 respostas

86

Um shell é o nome genérico de qualquer programa que forneça uma interface de texto para interagir com o computador. Você digita um comando e a saída é mostrada na tela.

Muitos shells possuem habilidades de scripting: Coloque vários comandos em um script e o shell os executa como se fossem digitados no teclado. A maioria dos shells oferece construções de programação adicionais que estendem o recurso de script para uma linguagem de programação.

Na maioria dos sistemas Unix / Linux, vários shells estão disponíveis: bash, csh, ksh, sh, tcsh, zsh, apenas para citar alguns. Eles diferem nas várias opções que dão ao usuário para manipular os comandos e na complexidade e nos recursos da linguagem de script.

Interativo: Como o termo implica: Interativo significa que os comandos são executados com a interação do usuário do teclado. Por exemplo. o shell pode solicitar que o usuário insira a entrada.

Não interativo: o shell provavelmente é executado a partir de um processo automatizado, portanto não é possível assumir se pode solicitar entrada ou se alguém verá a saída. Por exemplo, talvez seja melhor gravar a saída em um arquivo de registro.

Login: Significa que o shell é executado como parte do login do usuário no sistema. Normalmente usado para fazer qualquer configuração que um usuário precise / deseje estabelecer seu ambiente de trabalho.

Não login: Qualquer outro shell executado pelo usuário após o logon, ou que é executado por qualquer processo automatizado que não esteja acoplado a um usuário conectado.

    
por 11.10.2012 / 19:37
10

Pode ser estranho perceber para algumas pessoas que nunca tiveram um comp desconectado da Internet, que muitas respostas sobre sistemas UNIX já foram enviadas com elas. Para e. g., homem bash , seção "Invocação":

An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.

    
por 11.10.2012 / 19:27

Tags