En bash, les variables d'environnement ne sont pas correctement développées
-
01-07-2019 - |
Question
Sous bash, les variables d’environnement se développeront correctement lorsqu’elles seront placées après une commande echo, par exemple:
echo $HOME
Mais après cd ou cat, bash place un \ avant le signe $, comme suit:
cd \$HOME
Si j'utilise une variable comme second argument d'une commande, elle ne se développera pas du tout:
cp somefile $HOM
Quelle option mystérieuse ai-je dans mon fichier .bashrc ou .inputrc qui me cause une telle détresse?
La solution
Essayez complete -r cd pour supprimer la fonction spéciale d'achèvement de programmation que de nombreuses distributions Linux installent pour la commande cd
. La fonction ajoute une recherche dans la liste des répertoires spécifiés dans la variable CDPATH dans les complétions par des tabulations pour cd
, mais au prix de briser le comportement d'achèvement par défaut.
Voir http://www.gnu.org/ software / bash / manual / bashref.html # Achèvement programmable pour plus de détails sanglants.
Autres conseils
Ce que vous décrivez est une "fonctionnalité". introduite dans la version 4.2 de . Donc, vous ne disposez d'aucune option mystérieuse vous causant de la détresse, mais simplement "prévu". comportement.
Je trouve cela très gênant puisque je le préférais comme avant et je n’ai trouvé aucune option de configuration pour retrouver le comportement précédent. Jouer avec les options complete
suggérées par d’autres réponses ne m’a pas mené nulle part.
Pour la seconde instance, vous pouvez appuyer sur Echap avant tab pour le résoudre.
Je ne connais pas la solution à votre problème, mais vous pouvez vous rendre dans / etc / bash_completion ou dans les fichiers sous /etc/bash_completion.d pour déterminer les éléments. Les commandes utilisent l'auto-complétion et comment.
help complete
Cela pourrait également être utile.
Le manuel de référence Bash contient plus d'informations que vous ne le souhaitez. sur les errata d'expansion.
L'article 8.7 lui ressemble serait l'endroit pour commencer. Il donne des informations sur la fonction 'complète', entre autres.
Je réponds à une question de 4 ans! Fantastique!
C’est un bug / une fonctionnalité qui a été introduit involontairement dans la v4.2 et qui n’a pas été remarqué pendant une longue période. Cela a été souligné par geirha dans cette bande de roulement . Fonctionnalité non souhaitée ici
J'ai rencontré ce problème lorsque j'utilisais Ubuntu à la maison. Au travail, j'ai bash-3,00, alors j'ai passé un peu de temps à parcourir le site pour voir ce qui se passe. Je me demande si je peux "déclasser" ....
Vérifiez la réponse pour https://superuser.com/questions/434139/urxvt-tab-expand-environment-variables"> https://superuser.com/questions/434139/urxvt-tab-expand-environment-variables"> par Dmitry Alexandrov:
Ceci concerne l’option direxpand.
$ shopt -s direxpand
et$ FOO_PATH /
seront développés par la tabulation TAB.