o que você quer dizer com shell interativo?


25

UNIX: The Complete Reference, Second Edition, de Kenneth H. Rosen et al.

Você pode iniciar outro shell após efetuar login usando o nome do shell como um comando; por exemplo, para iniciar o shell Korn, você pode digitar ksh no prompt de comando. Esse tipo de shell não é um shell de logon e você não precisa fazer login novamente para usá-lo, mas ainda é um shell interativo, o que significa que você interage com o shell digitando comandos (em vez de usar o shell para execute um script, conforme discutido no Capítulo 20). As instâncias do shell que são executadas em uma janela de terminal quando você está usando uma interface gráfica também são shells interativos sem logon. Quando você inicia um shell sem logon, ele não lê seu arquivo .profile, .bash_profile ou .login (ou seu arquivo .logout), mas ainda lê o segundo arquivo de configuração do shell (como .bashrc). Isso significa que você pode testar as alterações no seu.

Eu estava passando por cima das linhas e não entendo o que isso significa por shell interativo. É verdade que o .profile não é lido se eu estiver usando o terminal?

Além disso, o que significa quando você diz que bourne não é um shell interativo enquanto o bash / csh é um shell interativo?

Respostas:


27

Um shell interativo é simplesmente qualquer processo de shell usado para digitar comandos e recuperar a saída desses comandos. Ou seja, um shell com o qual você interage.

Portanto, seu shell de login é interativo, assim como quaisquer outros shells iniciados manualmente, conforme descrito no trecho que você citou na sua pergunta. Por outro lado, quando você executa um script de shell, é iniciado um shell não interativo que executa os comandos no script e sai quando o script termina.

O shell Bourne pode ser usado como um shell interativo, exatamente como bashou tcsh. De fato, muitos sistemas, como o FreeBSD, usam shcomo shell de usuário padrão. Conchas modernas como bash, zsh, tcsh, etc têm muitas características que Bourne shell não tem, que os tornam mais confortável e conveniente para uso interativo (histórico de comandos, conclusão, etc).

Conchas não-interativo de login (isto é, conchas você iniciar manualmente a partir de outro shell ou abrindo uma janela de terminal) não ler seus .loginou .profilearquivos. Elas são lidas e executadas apenas por shells de login (shells iniciados pelo loginprocesso do sistema ou pelo seu gerenciador de exibição do X), portanto, os comandos e configurações que eles contêm são aplicados apenas uma vez, no início da sessão de login. Então, quando você iniciar um terminal, o shell que ele gera para você não lê os arquivos de login ( .loginpara os reservatórios c-estilo, .profilepara os reservatórios no estilo Bourne), mas faz ler os .cshrc, .bashrcetc arquivos.


É possível executar um shell como um shell de logon não interativo.
Jw013

É verdade, mas potencialmente confuso!
18712 JD

O ksh também é um shell moderno :-) Consulte www2.research.att.com/sw/download e use o menu na margem esquerda para navegar para AST-> ksh-> visão geral. Um novo lançamento sai várias vezes ao ano por David Korn e Glen Fowler. Boa sorte a todos.
shellter 19/07/12

1
@ shellter - sim, de fato. Mas não é um que eu já usei, e tive que parar de enumerar conchas em algum lugar! ;-)
D_Bye

Você disse que The Bourne shell can be used as an interactive shell, just like bash or tcsh. Bourne não é a mesma coisa bash?
Mr.Web
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.