Si tout le reste fonctionne, mais que certaines tentatives de complétion de nom de fichier (autocomplétion) échouent, il se peut que vous n'ayez pas l'autorisation d'effectuer une recherche dans un répertoire qui est un composant du chemin d'accès.
Supposons que vous souhaitiez obtenir le listing d'un autre utilisateur .bash_profile
fichier. Les éléments suivants ls
fonctionnera ; car sudo
exécute le ls
avec la permission requise.
$ sudo ls -al /home/someone_else/.bash_profile
Cependant, si vous essayez d'utiliser la complétion par nom de fichier, la complétion par tabulation ne fait rien.
$ sudo ls -al /home/someone_else/.bash_pr<tab> # does not complete
C'est parce que le bash
l'achèvement fonctionne avant sudo
est invoquée. La commande pourrait tout aussi bien être :
$ ls -al /home/someone_else/.bash_pr<tab>
Comme il n'y a pas d'autorisation de recherche dans ce répertoire, l'exécution de la commande ne donne rien.
Pour fonctionner temporairement avec de plus grandes permissions, vous pouvez démarrer un nouveau Shell avec sudo
.
$ sudo bash
Le site ls
peut maintenant être exécutée sans l'option sudo
prédicat, et l'autocomplétion fonctionne. (Notez que l'invite passe de $
a #
.)
# ls -al /home/someone_else/.bash_pr<tab>
Assurez-vous simplement de tuer le Shell lorsque votre tâche est terminée ; un Shell avec autant de puissance est dangereux.
# exit