J'ai actuellement mon bash PS1
réglé sur quelque chose comme ceci:
PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Comment puis-je lui faire montrer le chemin absolu au lieu du chemin relatif (par exemple /home/dave/dir
au lieu de ~/dir
)?
/home/dave/dir
et~/dir
les deux sont des chemins absolus, le second utilise une abréviation pour votre répertoire personnel. Un chemin relatif est un chemin relatif à votre répertoire actuel (par exemple../dir
) plutôt que de démarrer à la racine (/
).\u@\H[\w]:~\$
faituser@host[~/path]:~$
Réponses:
Il suffit de remplacer
\w
par\$PWD
:Quoi qu'il en soit, si vous avez un petit conseil, j'écrirais quelque chose comme:
la source
$PWD
est évaluée au moment de l'affectationPS1
, pas à chaque appel. Cependant , si vous échappez au signe dollar, cela fonctionnera\$PWD
. Avec cela, le signe dollar est un signe dollar au moment de l'affectation et l'évaluation de variable se produit à chaque invite. +1 à vous.Mettez dans votre maison
.bashrc
la source
\w
donne le chemin complet alors que\W
donne seulement le répertoire. Voir "Séquences d'échappement d'invite dedans ps1 de bash; -W devrait être relatif, et -w absolu, donc dans ce qui précède, vous devriez déjà avoir l'absolu?!
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
la source
W
affiche uniquement le nom du répertoire actuel,w
indique le chemin complet, mais utilise toujours des chemins relatifs.Humm ~ / dir est un chemin absolu mais utilise un "raccourci". Par exemple, si vous le faites,
cd /usr/local
votre invite affichera probablement le chemin complet de / usr / local. Donc de toute façon, vous avez déjà un chemin complet :-)Mais probablement votre bonne question est de savoir comment afficher le chemin complet sans aucun raccourci, comme ~?
Cependant, je ne connais pas de réponse à cette question et, en regardant l'homme, il semble en avoir une (du moins documentée).
la source
Exécuter
pwd
au lieu d'utiliser\W
.Version simple:
En utilisant ceci dans votre code:
la source