É possível atualizar o bash para a versão 4.0 no OSX Yosemite?
echo $BASH_VERSION
3.2.57(1)-release
Este artigo e esta discussão se referem à mesma pergunta, mas eles instalam um novo shell lado a lado com o antigo. Existe uma maneira de atualizar diretamente o antigo shell bash?
macos
terminal
bash
command-line
sluijs
fonte
fonte
Respostas:
A Apple não atualizará o Bash, porque a versão mais recente está licenciada sob a GPLv3, que a Apple não pode usar. Eles atualizaram a maioria de suas outras conchas. O ZSH, por exemplo, é principalmente atualizado.
Referências:
Após algumas pesquisas, esse parece ser o principal problema:
Isso exigiria que o software de código fechado, de outra forma, tivesse suas partes da GPL modificadas pelo público, o que obviamente seria um problema para a Apple.
fonte
bash
. A cláusula "Tivoization" pode explicar porbash
que não pode ser atualizada, digamos, em uma Apple TV, mas não em um Mac de mesa. Além disso, "partes da GPL" já precisariam ser modificadas pelo público; v3 não mudaria isso. Eu acreditaria que a cláusula de patentes da GPL v3 seria suficiente para impedir a Apple de tocar no código da GPL v3.É possível atualizar o bash para a versão 4.0 no OSX Yosemite? Sim.
Faça o download / instale o homebrew http://brew.sh/ executando este comando no terminal.
Saia e reabra o seu terminal. então digite
Mude o shell padrão através do terminal gui com o caminho literal do seu novo bash (EDIT: ainda não encontrei uma maneira CLI que funcione)
É possível atualizar o bash para a versão 4.0 do Apple fornecida no OSX Yosemite?
EDIT: Não. Não da maneira que o op está perguntando. Por exemplo, atualize a instalação atual, substituindo-se. Observou-se em outras respostas que a Apple não atualizou o bash devido a problemas de licenciamento. No entanto, baixar uma versão atualizada e separada do bash e usá-la como seu shell padrão é a solução canônica para a maioria dos intérpretes. Veja o python, por exemplo. Você não atualiza de 2,7 para 3,5, baixa uma versão separada e altera seu padrão.
fonte
sudo chpass -s /usr/local/bin/bash
. Nota: É melhor apontar para o link simbólico, para/usr/local/bin/
que o Brew possa lidar com atualizações sem precisar mudar o ambiente a cada vez.sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
entãochsh -s /usr/local/bin/bash
definirá o shell padrão para o terminalComo @William disse em sua resposta, a Apple não fornece o bash 4 devido a restrições da GPL. No entanto, você pode instalar o bash 4+ e também pode torná-lo seu shell padrão (incluindo o Terminal e o iTerm2 ), fazendo o seguinte.
Instale o Bash 4 via Homebrew
Primeiro instale a versão mais recente do bash. Existem várias maneiras de fazer isso, eu prefiro o Homebrew.
brew install bash
.O Bash 4 está agora disponível no seu PATH (assumindo que o bin Homebrew está no seu caminho). No entanto, ainda não é seu shell padrão. Você pode descobrir onde ele está localizado executando
which bash
. No meu caso é às/usr/local/bin/bash
.Usando o Bash 4
Como está no PATH, é possível iniciar uma sessão do Bash 4 apenas
bash
ou pode ser usada em scripts usando um Shebang .Por exemplo, isso usará uma instância específica do bash.
Isso usará o primeiro bash no PATH.
Você também pode definir o caminho do bash para perfis específicos no Terminal / iTerm2 usando as etapas descritas na resposta de @ user136952.
Tornando o Bash 4 o padrão
Como mencionado acima, depois de instalar o Bash 4 ainda não é o shell padrão. Para tornar o bash o padrão, você precisa executar mais duas etapas.
Primeiro, adicione o caminho do Bash 4 ao seu
/etc/shells
arquivo para que ele seja um shell de login permitido. Conforme descrito em / etc / shells , esse arquivo possui a lista de shells de login válidos. Depois de adicionar o novo caminho do bash, minha/etc/shells
aparência é a seguinte:Em seguida, usamos o chsh para torná-lo seu shell padrão. Portanto, qualquer sessão desse usuário usará esse shell. Você pode ler mais sobre isso em Alterar o shell no Mac OS X Terminal , mas o comando real é muito direto.
Agora, o novo bash é o nosso shell de login padrão. Se você abrir o Terminal ou o iTerm2 e executar,
bash --version
deverá ver a nova versão. Observe a "Licença GPLv3 +" e é por isso que a Apple não o inclui no macOS.fonte
sudo chpass -s /usr/local/bin/bash
altera meu shell apenas para root / sudo . Para alterar para o meu login normal, devo executar o comando semsudo
. Isso pode ser uma coisa do Active Directory; Não tenho certeza.#!/usr/local/bin/bash
shebang, procure usar#!/usr/bin/env bash
( explicação ). Isso executará o script com qualquer versão do bash acessível pelo ambiente que está iniciando o script, ou seja, o que forwhich bash
retornado. É uma solução mais portátil que usando caminhos específicos. Não podemos esperar que outros usuários instalem o bash através do homebrew.Você pode instalar outra versão do Bash sem homebrew
E siga as etapas aqui: https://gist.github.com/samnang/1759336
Faça o download e instale a versão do bash desejada Substitua XX (no bash-XX) pela versão desejada, por exemplo, 4.4
Você pode adicionar um alias se desejar que o comando bash o utilize. Coloque no seu ~ / .bash_profile
fonte
A instalação lado a lado com uma atualização para o seu shell (via chsh ou GUI) falhará nos scripts. Os scripts costumam usar
env bash
, o que é revertido para a versão do OS X bash. Portanto, o que você deseja pode não ser a atualização completa do bash, mas uma instalação lado a lado que sempre retorna a versão mais recente do bash (ou seja, mesmo quandoenv
é invocada).Então, para lidar com isso:
1) instale o bash via Homebrew, como os outros comentaristas publicaram
2) defina seu shell de login para esta nova versão (por meio do comando GUI ou chsh, como outros postaram)
3) defina
/usr/local/bin
(ou o caminho para a nova versão do bash) à frente da/bin
sua variável $ PATH, adicionando isto ao seu~/.bash_profile
:export PATH=/usr/local/bin:$PATH
fonte
.bash_profile
assim, portanto, afetaria apenas algo que você executa diretamente em um terminal.2019: Tão simples quanto neste post
depois guia um novo terminal, divirta-se!
fonte