Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb completion bash

9 réponses
Avatar
Sid Touati
Bonjour à tous,
je sais que cela peut paraître ridicule comme pb, mais je m'y suis
penché deux jours sans avoir trouvé la solution. J'ai lu tout ce que m'a
donné google, j'ai lu le manuel de bash, sans succès.

Voilà, mon système d'auto completion fonctionne bien, sauf pour les noms
de variables d'environnement. Par ex, lorsque je fais
ls $HOM[TAB]
l'auto-completion ne donne rien. Or, elle fonctionne bien avec les noms
de répertoire, noms de machines, noms de fichiers, exécutables, etc.
Mon fichier de configuration est /etc/bash_completion fourni par une
mandriva 2006. Ma version de bash est 3.0.

Quelqu'un aurait-il une idée d'où cela peut il provenir ?
Merci
S

9 réponses

Avatar
Serge Lavayssière
Bonjour Sid Touati,

Le Thu, 30 Nov 2006 12:08:28 +0100, Sid Touati a écrit :

Bonjour à tous,
je sais que cela peut paraître ridicule comme pb, mais je m'y suis
penché deux jours sans avoir trouvé la solution. J'ai lu tout ce que m'a
donné google, j'ai lu le manuel de bash, sans succès.

Voilà, mon système d'auto completion fonctionne bien, sauf pour les noms
de variables d'environnement. Par ex, lorsque je fais ls $HOM[TAB]
l'auto-completion ne donne rien. Or, elle fonctionne bien avec les noms de
répertoire, noms de machines, noms de fichiers, exécutables, etc. Mon
fichier de configuration est /etc/bash_completion fourni par une mandriva
2006. Ma version de bash est 3.0.



Quelques pistes :

- Par défaut, lorsque tu ouvre la console, tu es déjà dans ton home. Et
dans ton home, y-a-t'il un répertoire home à trouver ?
Si tu fais $cd /hom[tab], ça doit marcher. (ne pas faire le "$" devant
"home", mais "/" pour signifier "à partir de la racine)
- Linux tient compte des différences entre majuscules et minuscule. Or le
répertoire /home est en minuscules.

Ceci te permet-il d'avancer un peu dans la résolution de ton problème ?

A +

--
Serge Lavayssière
e-mail :
Pages perso : http://serge.lavayssiere.free.fr/
Plantes carnivores : http://dionee.gr.free.fr/

Avatar
Sid Touati
J'ai donné l'exemple de $HOME, mais cela n'a rien à voir dans mon cas.
Le pb de complétion surgit avec toutes les variables d'environnement, et
j'en ai un packet de variables. Je suis informaticien expérimenté, j'ai
déjà exploré les solutions de base.
Sinon, pour répondre à la question, la variable $HOME est bien définie.
C'est la completion du bash qui ne fonctionne pas, et ce pour toute
variable d'env. C'est un pb de configuration je pense, mais je n'ai
trouvé nullepart la solution.

S

Bonjour Sid Touati,



Quelques pistes :

- Par défaut, lorsque tu ouvre la console, tu es déjà dans ton home. Et
dans ton home, y-a-t'il un répertoire home à trouver ?
Si tu fais $cd /hom[tab], ça doit marcher. (ne pas faire le "$" devant
"home", mais "/" pour signifier "à partir de la racine)
- Linux tient compte des différences entre majuscules et minuscule. Or le
répertoire /home est en minuscules.

Ceci te permet-il d'avancer un peu dans la résolution de ton problème ?

A +



Avatar
manuel viet
Sid Touati wrote:

Mon fichier de configuration est /etc/bash_completion fourni par une
mandriva 2006. Ma version de bash est 3.0.

Quelqu'un aurait-il une idée d'où cela peut il provenir ?


Du bash_completion, justement ; essaye de ne pas le sourcer dans /etc/bashrc
(ou là où il apparaît, bash -v et grep pour le trouver) ; par défaut, bash
fait l'autocompletion des fichiers, répertoires, et variables (et d'autres
bricoles). Si ça marche, il va falloir étendre la configuration de
bash_completion pour y ajouter le support de ce que tu veux.

--
Manuel VIET * mailto:

Avatar
Rakotomandimby (R12y)
Sid Touati:

Je suis informaticien expérimenté


waw...

Avatar
Serge Lavayssière
Le Thu, 30 Nov 2006 13:23:37 +0100, Sid Touati a écrit :

J'ai donné l'exemple de $HOME, mais cela n'a rien à voir dans mon cas.


Désolé, je n'avais pas deviné !

Je suis informaticien expérimenté,


Je n'avais pas deviné, j'ai juste voulu aider, pas vexer.
Mille excuses.

A+

--
Serge Lavayssière
e-mail :
Pages perso : http://serge.lavayssiere.free.fr/
Plantes carnivores : http://dionee.gr.free.fr/

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:ekmjt3$1uub$,
*manuel viet* tapota sur f.c.o.l.configuration :

Mon fichier de configuration est /etc/bash_completion fourni par une
mandriva 2006. Ma version de bash est 3.0.

Quelqu'un aurait-il une idée d'où cela peut il provenir ?


Du bash_completion, justement ;


Exactement. Pour s'en convaincre, faire l'essai avec la commande echo :

$ echo $HO[TAB]

$ complete -p ls
$ complete -r ls
$ ls $HO[TAB]

--
Sébastien Monbrun aka TiChou


Avatar
Olivier V

Sid Touati:

Je suis informaticien expérimenté


waw...


Il y en a ?

Olivier V


Avatar
Rakotomandimby (R12y)
Olivier V:
Je suis informaticien expérimenté
waw...

Il y en a ?

Ben.... lui!




Avatar
ST
Bonjour,
merci pour la réponse. A vrai dire, mon ~/.bashrc source le fichier
~/.bash_completion (copie intégrale de /etc/bash_completion)



Exactement. Pour s'en convaincre, faire l'essai avec la commande echo :

$ echo $HO[TAB]



oui, j'ai déjà fait cet essai avec echo auparavant, la variable ne se
complète pas. Aucune autre variable d'environnement ne se complète par
défaut avec aucune des commandes.


$ complete -p ls
$ complete -r ls



Cela ne donne pas le résultat escompté. En effet, la variable $HOME se
complète uniquement avec ls et non pas avec d'autres commandes (comme
echo par ex). De plus, la variable ne se complète pas comme un répertoire :
'ls $HO{TAB]' donne 'ls $HOME'
Or, la completion devrait donner 'ls $HOME/'


J'ai cherché avec google ainsi que dans la doc de completion de bash
comment faire, je n'ai pas bien trouvé. Voici ce que je cherche à faire :
- completion automatique de toutes les variables avec toute les
commandes possibles du système
- les variables qui sont des répertoires devraient se compléter avec un
'/' final.
- en extra, je veux compléter les lignes de commandes à partir de
l'historique. En faisant ALT+P ou CTRL+P par ex, je souhaite que ma
ligne de commande se complète avec une ligne de commande existante dans
l'historique. Le comportement de CTRL+P chez moi donne bien une ligne de
commande de l'historique, mais pas la bonne (c'est un peu aléatoire
comme completion).

Finalement, la completion de tcsh est plus élaboré que celle de bash.

Merci pour votre aide.
S