Per chiunque giunga alla conclusione che i tempi di avvio per le nuove shell su MacOS sono troppo lenti per loro, questa è la soluzione .
Ho appena scoperto che ci sono in realtà due pacchetti che possono essere installati tramite brew
. Ho installato il bash-completion
pacchetto per anni e non mi sono mai preso la briga di metterlo in discussione, anche se in quel momento sono passato da Bash 3, a 4, ad ora 5. Di tanto in tanto, però, rivisitavo il problema , spesso inciampando in questa discussione StackOverflow.
C'è un altro pacchetto bash-completion@2
,!
Qual è la differenza? bash-completion
è per Bash versione 3.2. bash-completion@2
è per Bash versione 4.1+ e 5.
Rimuovendo il vecchio bash-completion
pacchetto e installandolo bash-completion@2
, i tempi di avvio della mia shell sono passati da 605ms a 244ms. Questo è un enorme miglioramento della velocità.
Sospetto che molti di noi stiano commettendo questo stesso errore, poiché le brew info
statistiche mostrano che il primo ha tonnellate di installazioni, mentre il secondo ha così pochi:
Va notato che l' attuale risposta scelta menziona commentando alcune righe, il che fornisce solo un leggero miglioramento dei tempi di avvio (se si utilizza il vecchio bash-completion
pacchetto, che molti probabilmente lo sono), ma non ha alcun impatto sul nuovo bash-completion@2
pacchetto: questo nuovo pacchetto è veloce, qualunque cosa accada. Ciò significa che non sono necessari hack.
TL; DR:
brew uninstall bash-completion && brew install bash-completion@2
Ricorda di aggiornare il percorso di origine al file di completamento nel tuo .bashrc
o .bash_profile
file.
fonti:
Come argomento in qualche modo correlato, uso molto l' rclone
utilità, quindi è installata. Capita anche di avere il file di completamento più grande che abbia mai visto . Rimuoverlo riduce i tempi di avvio della mia shell a ~ 120ms, il che è molto veloce.
Modificare:
Per chiunque desideri i dettagli tecnici che spiegano questo problema, ne ho scritto a lungo sui forum di Homebrew . Riassumendo, il motivo che bash-completion@2
è molto più veloce è perché è stato scritto in modo che non carichi più avidamente tutti i file di completamento; invece carica un file di completamento su richiesta o, come descritto dall'autore, li carica in modo non desideroso .