O que realmente é bash? (ou qualquer shell linux) [duplicado]

0

Eu entendo o bash como uma janela onde eu posso digitar comandos para o linux. Lendo o wikipedia, aprendi que havia vários aplicativos shell ao longo da história. Primeiro, eu entendi bash como algo em que você digita um comando e obtém uma resposta. Toda vez que você digitasse algo e pressionasse enter, ele responderia com outra linha de texto com a resposta. Mas é mais que isso. Você pode realmente criar 'aplicativos' dentro do bash. Por exemplo, existem os editores de texto nano e vim. Então parece que você pode realmente controlar alguns gráficos dentro da janela.

Outro exemplo é essa janela que aparece no comando raspi-config do raspberry pi. Isso aparece dentro da janela do putty quando eu digito este comando. O que é isso? Como eu faço coisas coloridas e retangulares aparecerem dentro do bash?

Eu quero entender o que está acontecendo: onde o bash roda dentro do linux? como se comunica com o sistema? Eu sou jovem e, portanto, eu não tenho nenhuma visão sobre a história dos terminais em computadores, eu não sei como tudo mudou quando GUIs apareceu.

    
por Madrava Kenevew 30.11.2015 / 04:33

1 resposta

3

Existem alguns níveis de abstração envolvidos na apresentação do que você vê na captura de tela que você forneceu. Vou tentar resumir, embora este seja um tema bastante amplo.

Emulador de terminal

O que você descreve:

a window where I can type commands to linux

não é realmente bash, pelo menos não por si só. Você está olhando para um emulador de terminal que executa seu shell (provavelmente /bin/bash ).

O exemplo mais citado de um emulador de terminal é o xterm , que é incluído em praticamente todos os sistemas Unix e Linux de desktop. No entanto, existem muitos emuladores de terminal, alguns dos quais têm substancialmente mais recursos do que xterm , como controles adicionais do mouse, guias (semelhantes a guias do navegador), etc.

Console Linux (também conhecido como "modo de texto")

Você também pode usar sua máquina Linux como um terminal físico , que é o que você veria ao inicializar um Linux Sistema Unix sem um ambiente gráfico (como é o caso de muitos sistemas configurados como servidores). O Linux ainda abstrai isso de alguma forma (permitindo múltiplos terminais virtuais em um computador físico), mas efetivamente eles se assemelham ao seu monitor ser uma exibição de "somente texto" dedicada.

Shell

O emulador de terminal pode executar qualquer programa de linha de comando de que goste. Por padrão, ele apenas executa um shell interativo (por exemplo, bash, sh, csh, ksh etc.). Então, o que é uma concha?

Simplesmente, um shell é um programa de linha de comando como qualquer outro. Se executado no modo interativo (ou seja, não executando um shell script pré-programado), ele apresenta um prompt (geralmente algo como type_outcast:~$ ), e então pega o que você digita e interpreta de acordo com seu próprio conjunto de regras ( língua). Cada shell é um pouco diferente, mas a maioria dos shells comuns é muito semelhante.

O que acontece quando você digita um comando?

Quando você digita um comando (por exemplo, ls -l ) e pressiona Enter, o shell verifica a sequência que você digitou e decide o que fazer. Nesse caso, ele procura por um programa chamado ls na variável $PATH e, quando o encontra, ele é executado em um processo filho ( fork() e exec() sistema chama se você quiser saber os internos) com o argumento que você forneceu ( -l ).

A saída do comando (conhecida como stdout ou "saída padrão", também stderr ou "erro padrão") é, por padrão, conectada ao terminal, assim você vê a saída do seu programa. Da mesma forma, stdin ("entrada padrão") também é conectado por padrão, portanto, você pode digitar entradas em programas interativos. (Às vezes, o programa assumirá um controle mais direto do terminal, que é um tópico de programação intermediário.)

entrada e saída podem ser redirecionadas , o que é outro tópico bastante amplo em si.

E sobre todas aquelas cores e menus extravagantes?

A maioria dos emuladores de terminal aceita cores e vários códigos de controle (normalmente seqüências de escape ANSI , além de mais alguns códigos específicos de terminal ). Esses códigos podem ser usados para desenhar interfaces coloridas, como a caixa de diálogo que você vê na captura de tela.

Em outras palavras, não há nenhum voodoo significativamente novo aqui. Meu sistema no começo dos anos 80 (muito antes do Windows aparecer) entendia os códigos ANSI e mostrava diálogos similares, quando meu terminal era simplesmente um monitor EGA (80x25 cores).

Então, o que mudou?

Relativamente pouco mudou desde então, exceto talvez pela prevalência muito mais ampla de desktops gráficos, que inspiraram aplicativos de emulador de terminal, para que as pessoas pudessem ter dimensões terminais maiores e ter seus terminais conectados com suas aplicações gráficas, em vez de ter que dedicar seu monitor e teclado a uma tela de texto somente 80x25 ou 80x43.

    
por 30.11.2015 / 05:24