GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi la saisie semi-automatique ne fonctionne-t-elle pas lors de la saisie d'un nom de commande après `source` ?

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 le READLINE section, Completing sous-section, dans man 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. Voir help complete (sur votre ligne de commande), le Programmable Completion sous-section dans man bash et dans la documentation en ligne de bash, et le complete 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.


Linux
  1. Pourquoi l'expression régulière fonctionne-t-elle dans X mais pas dans Y ?

  2. Pourquoi la substitution de processus Bash ne fonctionne-t-elle pas avec certaines commandes ?

  3. Pipeline Sed ne fonctionne pas sur le nom de fichier trouvé à l'intérieur de la substitution de commande Bash lorsqu'il est invoqué à partir de Find "-exec" ?

  4. Pourquoi un long délai après la commande introuvable ?

  5. Pourquoi "zip" dans une boucle For fonctionne-t-il lorsque le fichier existe, mais pas lorsqu'il n'existe pas ?

Commande de source bash

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Commande source introuvable

Pourquoi bash ne s'arrête-t-il pas en cas d'erreur pour les échecs dans la séquence de commandes court-circuitées ?

La correspondance de modèle ne fonctionne pas dans le script bash

Pourquoi cette regex ne fonctionne-t-elle pas sous Linux ?