source
recherche PATH
par défaut.
Mais dans bash, la saisie semi-automatique ne fonctionne pas lors de la saisie d'un nom de commande après source
.
En général, quand la saisie semi-automatique basée sur PATH
fonctionne, et quand ne fonctionne-t-il pas ?
Comment puis-je le faire fonctionner lors de la saisie de l'argument à source
?
Merci.
Réponse acceptée :
source
(le bash
commande intégrée) prend un nom de fichier argument; la recherche PATH n'est déclenchée que si le nom de fichier spécifié n'est pas trouvé. Donc source foo
essaie d'abord d'ouvrir ./foo
et ce n'est que lorsque cela échoue qu'il recherche /path/dir/foo
. Essayez de compléter par des tabulations avec des noms de fichiers qui existent dans votre répertoire actuel, ou fournissez des chemins vers la commande qui vous intéresse. Ceux-ci devraient être complétés par des tabulations comme vous vous en doutez.
-
Le moyen le plus simple d'obtenir ce que vous voulez est de reconnaître que la complétion par tabulation tente de nom complet du fichier mais vous voulez complete-command . Vous pouvez déclencher la commande complète avec le
M-!
raccourci clavier alias Alt+ ! . (Voir leREADLINE
section,Completing
sous-section, dansman bash
et dans la documentation en ligne de bash pour les autres fonctions de complétion et les raccourcis clavier par défaut.) -
Le plus dur serait de réviser les fonctions de complétion par défaut déclenchées pour
source
le premier argument de pour appeler à la fois le nom_de_fichier_complet et compléter la commande les fonctions. Voirhelp complete
(sur votre ligne de commande), leProgrammable Completion
sous-section dansman bash
et dans la documentation en ligne de bash, et lecomplete
commande intégrée.
En général, la complétion par tabulation est positionnelle et appelle différentes fonctions de complétion en fonction de l'endroit où vous vous trouvez dans la ligne de commande. Sur les systèmes Arch, les packages peuvent installer un fichier de complétion dans /usr/share/bash-completion
pour fournir des complétions contextuelles pour leurs exécutables.