Arquivos acidentalmente copiados sobre / bin / bash no OS X

1

Por engano, copiei dois arquivos em /bin/bash . Isso agora tornou meu terminal não responsivo . Eu segui este tutorial mas isso não ajudou.

Para referência, os arquivos são runcocoa.sh e runc.sh específicos deste tutorial . Eu também os copiei para /usr/local/bin , mas depois os deletei…

Como posso restaurar a funcionalidade do meu sistema?

    
por abbood 27.06.2013 / 14:43

2 respostas

4

Eu fui para Terminal »Preferências» Inicialização e mudei Shells abertos com de Default login shell para Comando e usou outro shell (por exemplo, /bin/csh em vez do meu original /bin/bash ).

Isso tornou meu terminal funcional novamente - e usando tutorial, instalei uma versão mais recente do Bash para substituir o /bin/bash I originalmente substituído.

Eu cortei e colei estas linhas:

curl -LO ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz
tar zxvf bash-4.2.tar.gz
cd bash-4.2
./configure && make && sudo make install
chsh -s /usr/local/bin/bash {user_name}
sudo bash -c "echo /usr/local/bin/bash >> /private/etc/shells"
cd /bin
sudo mv bash bash-old
sudo ln -s /usr/local/bin/bash bash

E pronto!

    
por 27.06.2013 / 14:56
1

Como mencionado na outra resposta, você pode usar o Terminal alterando o comando que abre com shells para algo como / bin / sh:

Osbinários/bin/she/bin/bashsãoquaseidênticos,entãovocêpodesimplesmentecopiar/bin/shsobre/bin/bash.

$diff-y--suppress-common-lines-W80<(strings/bin/bash)<(strings/bin/sh)>/bin/bash${FCEDIT:-${EDITOR:-ed}}|${FCEDIT:-ed}@(#)PROGRAM:bashPROJECT:bash-86.1|@(#)PROGRAM:shPROJECT:bash-86.1

Amaioriadasdiferençasentre/bin/she/bin/bashdependemdonomecomoqualoshellfoiinvocado.Emoutrasplataformas/bin/shéumlinksimbólicopara/bin/bash.Veja esta questão .

A partição de recuperação também inclui um binário bash. É menor porque não suporta i386, mas era idêntico ao binário criado por lipo -thin x86_64 /bin/bash -output /tmp/bash na minha instalação.

$ diskutil mount 'Recovery HD'
$ hdiutil mount /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg
$ stat -f %z /bin/bash /Volumes/OS\ X\ 10.8.2\ Base\ System/bin/bash
1333920
699040
$ file /bin/bash
/bin/bash: Mach-O universal binary with 2 architectures
/bin/bash (for architecture i386):  Mach-O executable i386
/bin/bash (for architecture x86_64):    Mach-O 64-bit executable x86_64
$ file /Volumes/OS\ X\ 10.8.2\ Base\ System/bin/bash
/Volumes/OS X 10.8.2 Base System/bin/bash: Mach-O 64-bit executable x86_64
$ lipo -thin x86_64 /bin/bash -output /tmp/bash
$ stat -f %z /tmp/bash
699040
$ diff /tmp/bash /Volumes/OS\ X\ 10.8.2\ Base\ System/bin/bash
$ 
    
por 28.06.2013 / 12:34