La variable d'invite $PS1
n'a probablement pas été définie, donc la valeur par défaut intégrée \s-\v\$
est utilisée.
Lorsque bash démarre de manière interactive, il source un fichier de configuration, généralement soit ~/.bashrc
ou ~/.bash_profile
, en supposant qu'ils existent, et c'est ainsi qu'une invite plus sophistiquée est définie. De man bash
:
INVOCATION
[...] Lorsque bash est invoqué en tant que shell de connexion interactif, ou en tant que shell non interactif avec l'option --login, il lit et exécute d'abord les commandes du fichier / etc / profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~ / .bash_profile, ~ / .bash_login et
~ / .profile, dans cet ordre [...]
[...] Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes de
~ / .bashrc, si ce fichier existe.
Le fait de ne pas avoir votre ensemble d'invites peut se produire dans deux contextes différents, les shells de connexion et les shells sans connexion. Si vous utilisez un gestionnaire d'affichage pour vous connecter directement à l'interface graphique, vous ne rencontrez pas de shell de connexion à moins que vous ne basculiez vers une console virtuelle (via, par exemple CtrlAlt+ F1 à F6). Cependant, vous pouvez tester votre profil de connexion bash dans l'interface graphique en ouvrant un nouveau shell de connexion explicitement: bash -l
.
Un problème se produit avec les shells sans connexion
Si le problème se produit avec, par exemple, des terminaux GUI normaux, alors soit votre ~/.bashrc
est manquant, soit il a été modifié pour exclure le sourcing d'un fichier global, probablement /etc/bashrc
.
Si ~/.bashrc
n'existe pas, il devrait y avoir un /etc/skel/.bashrc
utilisé pour le créer pour les nouveaux utilisateurs. Copiez simplement ce fichier dans votre répertoire personnel et votre invite par défaut devrait revenir pour le prochain nouveau shell que vous ouvrez.
Si ~/.bashrc
existe, vérifiez s'il y a une ligne quelque part qui source /etc/bashrc
:
. /etc/bashrc
-OR-
source /etc/bashrc
Sinon, vérifiez si ce fichier existe (il devrait, au moins sur la plupart des distributions Linux) et ajoutez une telle ligne à votre fichier ~/.bashrc
.
Un problème se produit avec les shells de connexion
Si le problème se produit avec des shells de connexion ainsi que des shells sans connexion, le problème est probablement le même que ci-dessus. Si cela se produit uniquement avec les shells de connexion, vous n'avez pas l'un des fichiers mentionnés pour les shells de connexion sous la citation INVOCATION ci-dessus, ou ils ne vous fournissent pas ~/.bashrc
ce qui est normal sur la plupart des distributions Linux. Si aucun de ces fichiers n'existe, créez-le ~/.bash_profile
avec ceci:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Cela vous permet, pour la plupart, de conserver votre configuration dans un seul fichier ( ~/.bashrc
).
Si, quoi que vous fassiez, vous ne pouvez pas récupérer une invite, vous pouvez en créer une et la mettre de ~/.bashrc
cette façon:
if [ "$PS1 ]; then
PS1= .... # see below
fi
Cela est dû au fait que $ PS1 est défini et a une valeur par défaut pour les shells interactifs, et vous ne voulez pas la définir autrement car d'autres choses peuvent utiliser cette valeur pour déterminer s'il s'agit d'un environnement interactif.
La page de manuel bash contient une section PROMPTING qui décrit comment définir une invite avec des fonctionnalités dynamiques telles que votre nom d'utilisateur et votre répertoire de travail actuel, qui seraient, par exemple:
PS1="\u \w:"
Il y a un guide pour utiliser la couleur ici . Faites attention au fait que vous devez inclure des caractères non imprimés dans \[
et \]
(il y a une discussion à ce sujet à la fin de la réponse sur les couleurs).