Esta questão, de repente, tornar-se extremamente relevante, ver Shellshock
ecnepsnai
Sim. 10 caracteres
shrx 07/03
Respostas:
105
Os binários em /{,usr/}{,s}bin/normalmente não devem ser substituídos por outros arquivos. Outros programas esperam que sejam as versões que acompanham o OS X e são substituídos por atualizações do SO.
Após a execução brew install bash, você pode alterar o shell padrão com segurança:
Adicionando /usr/local/bin/basha/etc/shells
Em execução chsh -s /usr/local/bin/bash.
As configurações no Terminal ou no iTerm 2 normalmente não precisam ser alteradas. Ambos padronizam a abertura de novas janelas com um shell de login do shell padrão.
O shell padrão também pode ser alterado nas Preferências do Sistema ou com dscl, mas todas as três opções são modificadas /var/db/dslocal/nodes/Default/users/$USER.plist.
Parece que funcionou e, se houver algum problema, será fácil reverter! Obrigado!
Rudy
não sabia que a página de opções avançadas estava lá. Doce!
Lemonginger 10/09/11
2
É necessário um pouco sobre a edição /etc/shellspara incluir o bash instalado pelo brew. Caso contrário (pelo menos na minha máquina), o terminal se recusará a iniciar.
Brendanjerwin
2
O terceiro comando (csh -s) parece não ser mais necessário no Mavericks 10.9.2.
Brent Faust
2
Eu só precisava fazer brew install bashisso funcionar. (ou seja, não precisa modificar /etc/shells)
Daniel
4
Eu posso estar errado aqui, mas até onde eu sei brewinstalar sua própria instância bash, uma vez que o brew funciona em baixo /usr/local/binenquanto os padrões do sistema funcionam em /bin(e /usr/bin).
Sobre o Terminal, você pode abrir os shells com seu próprio comando personalizado. Vá para Preferências> Inicialização e selecione Shells abertos com: Comando (caminho completo) . Basta digitar o caminho para o seu novo bashe vuala!
A desvantagem de colocar um novo bash na versão do sistema é que qualquer atualização do sistema operacional pode apagar seu shell preferido. Presumivelmente, o OP deseja usar novos recursos que podem ser interrompidos se o sistema operacional instalar uma versão "mais recente que o antigo", mas "mais antiga que o personalizado" do bash. Melhor mudar o caminho padrão ou alterar a variável do shell do usuário.
bmike
bem, você pode simplesmente criar um novo simlink, pois ele não substituirá a versão do bash no diretório usr / local. mas você está correto, o caminho de Daniel é prov melhor
lemonginger
Ooh - editar a sua resposta por favor, para colocar essa primeira (e manter a idéia original se preferir como uma segunda alternativa - Eu gosto muito melhor e adoraria a chance de reverter o meu voto :-)
bmike
1
hmm, bem, isso é o que eu disse, mas editei para tentar esclarecer o que cada passo faz um pouco melhor. Ainda acho que a resposta mais bem avaliada é provavelmente melhor :)
#
Parece uma maneira bastante perigosa de alterar o shell do sistema.
Samuel Mikel Bowles
0
Eu acho que é seguro se você apenas lançar
brew install bash
e adicione-o como seu shell padrão
chsh -s /usr/local/bin/bash
pois você está apenas modificando seu usuário atual. No entanto, notei que o meu padrão ~ / .profile é
if["/bin/bash"== $BASH ];then
source ~/.bashrcfi
portanto, ele precisa ser atualizado. Eu mudei para
Veja outras respostas para saber por que chshnão basta. Também o trecho .profile atualizados parece idêntico ao original um
nohillside
@patrix: obrigado por apontar, atualizei o segundo trecho. Seria bom se brew install bashnão fosse necessária nenhuma ação adicional. Com o perfil atualizado que compartilhei, isso não acontece. Espero que isso possa ajudar os outros.
Respostas:
Os binários em
/{,usr/}{,s}bin/
normalmente não devem ser substituídos por outros arquivos. Outros programas esperam que sejam as versões que acompanham o OS X e são substituídos por atualizações do SO.Após a execução
brew install bash
, você pode alterar o shell padrão com segurança:/usr/local/bin/bash
a/etc/shells
chsh -s /usr/local/bin/bash
.As configurações no Terminal ou no iTerm 2 normalmente não precisam ser alteradas. Ambos padronizam a abertura de novas janelas com um shell de login do shell padrão.
O shell padrão também pode ser alterado nas Preferências do Sistema ou com dscl, mas todas as três opções são modificadas
/var/db/dslocal/nodes/Default/users/$USER.plist
.fonte
/etc/shells
para incluir o bash instalado pelo brew. Caso contrário (pelo menos na minha máquina), o terminal se recusará a iniciar.brew install bash
isso funcionar. (ou seja, não precisa modificar/etc/shells
)Eu posso estar errado aqui, mas até onde eu sei
brew
instalar sua própria instânciabash
, uma vez que o brew funciona em baixo/usr/local/bin
enquanto os padrões do sistema funcionam em/bin
(e/usr/bin
).Sobre o Terminal, você pode abrir os shells com seu próprio comando personalizado. Vá para Preferências> Inicialização e selecione Shells abertos com: Comando (caminho completo) . Basta digitar o caminho para o seu novo
bash
e vuala!Espero que ajude!
BTW: Backup! O melhor conselho nessas situações!
fonte
Bem antes de fazer qualquer coisa, faça backup do seu arquivo atual (é claro, mas sempre merece ser dito)
Em seguida, crie um link simbólico para o executável do bash que o Homebrew baixou. Eu acho que vai estar em / usr / local / Cellar, assim
Agora / bin / bash aponta para o arquivo em seu diretório usr / local
fonte
Eu acho que é seguro se você apenas lançar
e adicione-o como seu shell padrão
pois você está apenas modificando seu usuário atual. No entanto, notei que o meu padrão ~ / .profile é
portanto, ele precisa ser atualizado. Eu mudei para
fonte
chsh
não basta. Também o trecho .profile atualizados parece idêntico ao original umbrew install bash
não fosse necessária nenhuma ação adicional. Com o perfil atualizado que compartilhei, isso não acontece. Espero que isso possa ajudar os outros.