Qual é a diferença entre "Shell" e "Bash" e o que esses termos significam?
Até onde eu sei, não há diferença. Mas eu já vi muitos livros sobre "Shell" e outros sobre "Bash"!
Portanto, caso eu queira trabalhar com o Terminal no Mac OS X e escrever alguns scripts bash, estou pensando em que tipo de livros devo procurar.
Respostas:
Um " shell " é qualquer software que fornece uma interface para um sistema operacional. Por exemplo, explorer.exe é o shell padrão no Windows (apesar de existirem alternativas ) e no OS X Finder fornece praticamente a mesma funcionalidade. No Linux / * nix, o shell pode fazer parte do ambiente de área de trabalho (como Gnome ou KDE ), ou pode ser um componente de software separado em cima (como Unity ou Cinnamon ).
Os exemplos acima são todos shells gráficos que usam uma combinação de janelas, menus, ícones e outros elementos para fornecer uma interface gráfica do usuário (GUI) que pode ser interagida com o uso do cursor do mouse. No entanto, no contexto de software como o Bash, ou escrever scripts, "shell" geralmente é interpretado como um intérprete de linha de comando, que executa basicamente as mesmas tarefas que um shell gráfico, exceto que é inteiramente baseado em texto.
O Bash é um exemplo específico de shell de linha de comando e provavelmente é um dos mais conhecidos, sendo o padrão em muitas distribuições Linux e no OS X. Ele foi projetado como um substituto para o shell Bourne (o Bash significa para "Bourne again shell"), uma das primeiras conchas do Unix .
Exemplos de shells de linha de comando no Windows incluem cmd.exe (também conhecido como Prompt de Comando) e PowerShell .
fonte
Bash é uma das várias conchas.
Um shell em um sistema Unix ou semelhante ao Unix, como OSX ou Linux, é um programa aplicativo que fornece uma interface de linha de comando para o sistema operacional, permitindo digitar comandos e executá-los. Há vários shells diferentes para escolher, mas todos eles fornecem curingas de nome de arquivo, canalização, documentos aqui, substituição de comandos, variáveis e estruturas de controle para teste de condição e iteração.
O shell Unix original era o shell Bourne , sh, escrito por Stephen Bourne no Bell Labs. Depois veio o shell C , escrito por Bill Joy em Berkeley, desde que atualizado como tcsh . Outros shells incluem o Korn shell , ksh, escrito por David Korn, também no Bell Labs, e o bash , o "Bourne again shell", escrito por Brian Fox para o projeto GNU como um substituto gratuito do sh.
Hoje, o bash é provavelmente o shell Unix mais popular, mas muitas pessoas (inclusive eu) ainda preferem o shell C com base em (o que para alguns de nós parece) sua melhor sintaxe. Basicamente, é uma questão de gosto, por isso recomendo a leitura dos artigos da Wikipedia que vinculei para ajudar você a começar.
fonte
O termo 'shell' é bem nomeado. É literalmente um shell em torno do sistema operacional, permitindo que o usuário interaja com o computador. Quando foi originalmente concebido, havia muito pouca ou nenhuma interface gráfica de usuário (sem janelas :(). Tudo foi feito na linha de comando. Mas até a linha de comando precisava de um lugar para morar. Vivia, e ainda o faz, em um shell .
Em termos simples, para que a linha de comando seja útil, ele precisava de instruções que pudesse chamar. Assim, foram criados programas para serem executados dentro do shell para a linha de comando usar. Os programas foram agrupados firmemente em seus próprios pacotes e pretendiam trabalhar juntos. Eles incluem programas como "ls" e "grep", "ps", "sed" etc. Eles também incluem comandos de redirecionamento de arquivos como ">" e "<" e pipes ("|"). Mais importante, eles também incluem construções de programação como operações condicionais (se, então, para loops, enquanto loops, maneiras de verificar o status retornado quando você executa uma instrução (por exemplo, se você executar "ls", encontrou alguma coisa?)), Coisa Curtiu isso). Estes são os fundamentos de scripts de linha de comando (shell) mais complexos,
Quando alguém usa o termo 'Bash Shell', eles estão falando sobre um interpretador de linha de comando chamado 'Bash' que é executado no shell O / S. Você pode pensar nisso como abreviação de 'Bash Shell Interpreter'. Existem outros intérpretes como Bourne (Bash é um 'Bourne Shell novo e aprimorado e é a abreviação de Bourne Again Shell). Há também o C-Shell, o K-Shell (preferido por muitos que escrevem scripts de shell complexos) e outras variantes do GNU. Ao longo dos anos, tornou-se habitual consultar o interpretador de linha de comando específico que você está usando como shell, porque um não pode ser usado sem o outro. Mas a realidade é que eles são diferentes.
Por que eles são conhecidos como intérpretes de linha de comando e não como o shell real: é porque eles vivem no shell e interpretam todos os comandos como se estivessem rodando em um programa. E o shell não se importa com qual intérprete você executa nele, desde que atenda aos padrões corretos.
E por que eles são chamados de intérpretes, é porque eles são realmente intérpretes. Mesmo se você não estiver executando explicitamente um script (e um script for realmente apenas um arquivo de texto dos comandos criados para poder executar os mesmos comandos repetidamente, sem precisar digitá-los novamente). Por exemplo, tome o humilde comando 'ls'. Quando você o executa, ele retorna uma lista de arquivos. Mas como é executado é mais importante para a sua pergunta: ele realmente é executado dentro do contexto do interpretador de linha de comando, mesmo se você apenas executar o que parece ser um comando simples. Ou seja, é executado como se fosse uma declaração em parte de um programa maior. Ele é executado como se estivesse em um arquivo de script de script de shell sem realmente estar em um arquivo de script de shell. Um arquivo de script de shell anônimo por assim dizer.
Tudo o que você executa na linha de comando tem isso em comum (seja um comando único como 'ls' ou um arquivo de script cheio de comandos e iteradores e instruções condicionais): tudo é processado pelo interpretador da linha de comando; seja Bash, C-Shell, K-Shell (padrão no AIX btw).
Para entender o que quero dizer, faça um diretório 'test':
Digite-o e execute os seguintes comandos
Você receberá algum tipo de resposta como "nenhum arquivo ou diretório". Agora digite o comando
($? diz, diga-me o que encontrou no computador encriptado.) Você deve ver o número retornado (deve ser) '2'. Esse é o código de retorno do grep que significa 'não existe esse arquivo ou diretório'. Agora execute o seguinte:
Você verá o arquivo 'hello.txt' retornado do comando grep inicial e agora deverá ver o 'echo $?' retorne o número '0', o que significa que realmente encontrou algo.
Mesmo que esses comandos aparentemente únicos sejam executados, o interpretador de linha de comando age como se fosse parte de um programa maior e controla seus valores de retorno. É por isso que se você esquecer o * no final do comando grep, ele não retornará. É sabido que a declaração está incompleta e espera mais informações. Afinal, você poderia pedir para receber os resultados de algum loop, o que é perfeitamente legal para escrever e executar na linha de comando.
Bottom line é o shell é o shell, e o intérprete (qualquer que seja o nome daquele que você usa, 'Bash', k-shell, etc.) são diferentes. Mas muitas vezes são usados de forma intercambiável, porque a qualquer instante eles estão completamente ligados.
fonte
Shell é uma interface de usuário baseada em texto.
Bash é um tipo de concha.
fonte
bash
é dashell
família, mas há muitas outras conchas.Por exemplo, no Minix3 , existe o
ash
shell, ele não suporta matrizes associativas comobash4
.O padrão POSIX é uma tentativa de criar uma API portátil entre diferentes shells e sistemas operacionais.
Veja http://en.wikipedia.org/wiki/Unix_shell#Bourne_shell_compatible
fonte
bash
é uma das muitas conchas que existem.Todas as conchas têm suas semelhanças e diferenças. Por exemplo, um script escrito em bash pode ser total ou amplamente compatível com outro shell (por exemplo, zsh ).
Devido ao fato de
bash
ser muito difundido, geralmente está implícito que um script é compatível com ele.Se você deseja comprar um livro, compre um escrito especificamente para o shell que pretende usar. Seria uma boa idéia ler as diferenças antes de gastar dinheiro.
fonte