Ci sono degli svantaggi nell'usare la versione brew di bash per / bin / sh?

6

Ho patchato bash & sh con le ultime patch come descritto qui , ma ora ho alcuni problemi con alcune cose nei miei dotfile (in particolare il caricamento di rvm e alcune funzioni e completamenti personalizzati).

Non ho problemi se utilizzo la versione brew di bash sia come /bin/bash che /bin/sh , ma mi chiedo se potrei incontrare altri problemi con le cose del sistema.

    
posta Michael Johnston 29.09.2014 - 01:29
fonte

1 risposta

5

Vorrei sconsigliare di fare l'installazione Homebrew di bash il comando system-wide bash o sh . Comunque dovrebbe andare bene come shell personale.

Homebrew fornisce un'installazione vaniglia di Gnu Bash . Ti verranno perse eventuali aggiunte di Apple alla shell fornite se utilizzi i binari forniti da Apple bash o sh o il codice sorgente da opensource.apple.com . Qualsiasi script di shell a livello di sistema operativo fornito da Apple potrebbe fare affidamento su quelle estensioni di Apple e le relative modifiche.

Homebrew installa anche, per impostazione predefinita, una versione 4.3.x di bash:

> brew info bash
bash: stable 4.3.24 (bottled), HEAD
http://www.gnu.org/software/bash/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/bash.rb
==> Dependencies
Required: readline ✘
==> Caveats
In order to use this build of bash as your login shell,
it must be added to /etc/shells.

Questa è una versione significativamente diversa dalla versione 3.2.x fornita con OS X 10.9.x. Non è retrocompatibile al 100% con versioni pre 4. Ad esempio estrazione della sottostringa sull'indicizzazione dei parametri posizionali modificata da 3 a 4. Potrebbe rompere il livello di sistema script.

Entrambi questi motivi possono portare a script di sistema non utilizzabili sul tuo Mac se passi alle versioni Homebrew di bash e sh per qualcosa di diverso dalla tua shell personale. Puoi rendere la shell personale la shell Homebrew bash eseguendo:

chsh -s /usr/local/bin/bash

e poi disconnettersi e ricollegarsi. Ciò dovrebbe essere relativamente sicuro per il funzionamento stabile della macchina.

Se il comando chsh sopra non riesce a dire che /usr/local/bin/bash non è una shell accettabile devi aggiungerlo all'elenco in /etc/shells eseguendo:

sudo vim /etc/shells

Dovrebbe essere aggiunto su una nuova riga nel file in questo modo:

> cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh
/usr/local/bin/bash
    
risposta data 29.09.2014 - 03:09
fonte

Leggi altre domande sui tag