web-dev-qa-db-fra.com

Comment puis-je afficher le chemin absolu dans l'invite?

Mon bash PS1 est actuellement 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 afficher le chemin absolu au lieu du chemin relatif (par exemple /home/dave/dir au lieu de ~/dir)?

47
David B

Il suffit de remplacer \w par la variable d'environnement PWD:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\$PWD\n\$ "

Quoi qu'il en soit, si vous avez un petit conseil, j'écrirais quelque chose comme:

PS1='\[`[ $? = 0 ] && X=2 || X=1; tput setaf $X`\]\h\[`tput sgr0`\]:$PWD\n\$ '
45
cYrus

Mettez dans votre maison .bashrc

PS1='\u@\h:\w\$ '
22
Alex

Humm ~/dir est un chemin absolu mais utilise un "raccourci". Par exemple, si vous 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).

0
Huygens

Exécutez pwd au lieu d'utiliser \W.

Version simple:

export PS1="\`pwd\` $ "

En utilisant ceci dans votre code:

export PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\`pwd\`\n\$ "
0
Doug Harris

dans 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

0
Sirex