EDIT: il seguito è applicabile alle versioni precedenti di MSYS2. A partire dal 2020-01-21, non è più necessario. La risposta di FeRD sembra funzionare meglio.
Volevo usare il pesce invece di bash. Sfortunatamente la maggior parte dei metodi qui non ha funzionato, probabilmente perché la sintassi dei pesci è così diversa.
Ciò che ha funzionato meglio è stata l'idea di wzhd di correre exec fish
come prima cosa quando inizia bash. Rimaneva comunque un problema: se volevo usare bash, dovevo modificare .bashrc
per rimuovere quella linea perché anche se lo avessi eseguito da fish avrebbe semplicemente avviato un'altra istanza di fish.
La cosa migliore da fare è assicurarsi che exec fish
venga eseguito all'avvio di msys2, ma non ogni volta che inizia bash.
Il modo in cui ho trovato è attraverso il file msys2_shell.cmd
nella cartella di installazione di msys2. Ho trovato queste righe:
set SHELL_ARGS=
:collectparams
if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams
Sembra che stiano definendo i parametri da passare a bash non appena inizia, ma solo quando questo script viene eseguito (diversamente .bashrc
). Quindi ho aggiunto questa riga subito dopo:
set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"
Finora sembra tutto a posto. L'avvio di msys2 sostituisce bash con fish non appena il primo termina il caricamento, ma se ho bisogno di una riga di comando bash posso ancora avviarlo bash
.