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 leREADLINEsection,Completingsous-section, dansman bashet 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
sourcele 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 Completionsous-section dansman bashet dans la documentation en ligne de bash, et lecompletecommande 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.