Existe-t-il une option de configuration dans Cygwin pour que, lorsque Bash complète le nom de la commande, le nom de fichier .exe
est ignoré (non inclus) ?
Explication du problème
Lorsque vous utilisez la complétion par tabulation en Bash sur un système Cygwin pour compléter le nom d'une commande, la balise .exe
est ajoutée au nom de la commande, par exemple en tapant opens
et en appuyant sur Tab complète la commande à openssl.exe
.
La commande s'exécute correctement (sous MS Windows, le .exe
est facultative lors de l'exécution d'une commande) mais le problème est que l'extension _openssl()
fonction d'achèvement fournie par le bash-completion
n'est configuré que pour fournir des compléments d'arguments pour les éléments suivants openssl
- pas openssl.exe
. Par exemple :
$ complete -p openssl openssl.exe
complete -o default -F _openssl openssl
bash: complete: openssl.exe: no completion specification
Le même problème existe lorsque l'on essaie de compléter les arguments de l'option tous des commandes exécutables.
J'utilise actuellement Bash avec le mode Emacs configuré pour l'édition Readline de sorte que je puisse appuyer sur Esc suivi de deux Backspace appuie pour retirer le .exe
avant de commencer à taper les arguments de la commande. Idéalement, j'aimerais éviter d'avoir à le faire à chaque fois que je lance une commande.
Ce que j'ai essayé/cherché
Je me suis dit que ce n'était probablement pas possible sans modifier le code source de la DLL Cygwin ou de la complétion de commande de Bash ( pcomplete.c
). Cependant, je remarque que les builtins Bash, type
y command
dépouille automatiquement le .exe
suffixe du nom des fichiers exécutables, par exemple,
$ type -a openssl
openssl is /usr/bin/openssl
$ command -v openssl
/usr/bin/openssl
Il semble que Bash, exécuté sous Cygwin, dispose d'un mécanisme permettant de fournir le nom de la commande (sans l'extension de la commande). .exe
extension). Cependant, je ne sais pas comment - ou si - cela peut être utilisé pour omettre l'extension de fichier lors de l'exécution des commandes.