Ich habe momentan meine Bash PS1
auf so etwas eingestellt:
PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Wie kann ich dafür sorgen, dass der absolute Pfad anstelle des relativen Pfads angezeigt wird (z. B. /home/dave/dir
anstelle von ~/dir
)?
/home/dave/dir
und~/dir
sind beide absolute Pfade, der zweite verwendet eine Abkürzung für Ihr Home-Verzeichnis. Ein relativer Pfad ist ein Pfad, der relativ zu Ihrem aktuellen Verzeichnis ist (z. B.../dir
), anstatt mit root (/
) zu beginnen.\u@\H[\w]:~\$
machtuser@host[~/path]:~$
Antworten:
Einfach ersetzen
\w
durch\$PWD
:Wie auch immer, wenn es Ihnen etwas ausmacht, würde ich Folgendes schreiben:
quelle
$PWD
wird zum Zeitpunkt der Zuordnung zu ausgewertetPS1
, nicht bei jedem Anruf. Allerdings , wenn Sie das Dollarzeichen entkommen, wird es funktionieren -\$PWD
. Damit ist das Dollarzeichen zum Zeitpunkt der Zuordnung ein Dollarzeichen und die Variablenauswertung erfolgt bei jeder Abfrage. +1 an Sie.Setzen Sie in Ihr Haus ein
.bashrc
quelle
\w
gibt den vollständigen Pfad an, während\W
nur das Verzeichnis angegeben wird. Siehe "Bash Prompt Escape Sequences"in bashs ps1; -W sollte relativ und -w absolut sein, also solltest du oben schon das Absolute haben ?!
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
quelle
W
Zeigt nur den aktuellen Verzeichnisnamen an,w
zeigt den vollständigen Pfad an, verwendet jedoch weiterhin relative Pfade.Humm ~ / dir ist ein absoluter Pfad, der jedoch eine "Abkürzung" verwendet. Wenn Sie dies tun,
cd /usr/local
wird höchstwahrscheinlich der vollständige Pfad von / usr / local angezeigt. Du hast also sowieso schon einen vollen Pfad :-)Aber wahrscheinlich ist Ihre richtige Frage, wie Sie den vollständigen Pfad ohne Verknüpfungen wie ~ anzeigen können?
Allerdings kenne ich keine Antwort darauf und wenn ich den Mann anschaue, scheint er eine zu haben (zumindest dokumentiert).
quelle
Führen Sie aus,
pwd
anstatt zu verwenden\W
.Einfache Version:
Verwenden Sie dies in Ihrem Code:
quelle