EDIT: ce qui suit s'applique aux versions antérieures de MSYS2. Depuis le 2020-01-21, il n'est plus nécessaire. La réponse de FeRD semble fonctionner le mieux.
Je voulais utiliser du poisson au lieu de bash. Malheureusement, la plupart des méthodes ici n'ont pas fonctionné, peut-être parce que la syntaxe du poisson est si différente.
Ce qui a le mieux fonctionné, c'est l'idée de wzhd de courir exec fish
en premier lorsque bash commence. Il y avait toujours un problème, cependant: si je voulais utiliser bash, je devais éditer .bashrc
pour supprimer cette ligne car même si je l'exécutais à partir de fish, cela ne ferait que démarrer une autre instance de fish.
La meilleure chose à faire est de s'assurer qu'elle exec fish
s'exécute au début de msys2, mais pas à chaque démarrage de bash.
La façon dont j'ai trouvé est à travers le fichier msys2_shell.cmd
dans le dossier d'installation de msys2. J'ai trouvé ces lignes:
set SHELL_ARGS=
:collectparams
if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams
Il semble qu'ils définissent des paramètres à passer à bash dès qu'il commence, mais uniquement lorsque ce script s'exécute (contrairement .bashrc
). J'ai donc ajouté cette ligne juste après:
set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"
Tout semble aller bien jusqu'à présent. Le démarrage de msys2 remplace bash par fish dès que le premier termine le chargement, mais si j'ai besoin d'une ligne de commande bash, je peux toujours le démarrer avec bash
.