Obecnie mam bash PS1
ustawiony na coś takiego:
PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Jak sprawić, by pokazywała ścieżkę bezwzględną zamiast względnej (np. /home/dave/dir
Zamiast ~/dir
)?
/home/dave/dir
i~/dir
obie są ścieżkami bezwzględnymi, drugi używa skrótu do twojego katalogu domowego. Ścieżka względna to ścieżka względna do bieżącego katalogu (np.../dir
), A nie zaczynająca się od root (/
).\u@\H[\w]:~\$
robiuser@host[~/path]:~$
Odpowiedzi:
Wystarczy wymienić
\w
z\$PWD
:W każdym razie, jeśli masz coś przeciwko małej wskazówce, napisałbym coś takiego:
źródło
$PWD
jest on oceniany w momencie przypisania doPS1
, a nie przy każdym połączeniu. Jednakże , jeśli można uciec znak dolara, to będzie działać -\$PWD
. Dzięki temu znak dolara jest znakiem dolara w momencie przypisania, a ocena zmiennej odbywa się przy każdym znaku zachęty. +1 dla ciebie.Umieść w swoim domu
.bashrc
źródło
\w
pełna ścieżka, a\W
tylko katalog. Zobacz „Sekwencje ucieczki Bash Prompt”w ps1 basha; -W powinno być względne i -w absolutne, więc w powyższym przypadku powinieneś już mieć absolut?
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
źródło
W
pokazuje tylko bieżącą nazwę katalogu,w
pokazuje pełną ścieżkę, ale nadal używa ścieżek względnych.Humm ~ / dir jest ścieżką absolutną, ale używa „skrótu”. Na przykład, jeśli to zrobisz,
cd /usr/local
najprawdopodobniej wyświetli się pełna ścieżka do katalogu / usr / local. W każdym razie masz już pełną ścieżkę :-)Ale prawdopodobnie twoje poprawne pytanie brzmi: jak wyświetlić pełną ścieżkę bez skrótów takich jak ~?
Jednak nie znam odpowiedzi na to pytanie i patrząc na mężczyznę, wydaje się, że ma jedną (przynajmniej udokumentowaną).
źródło
Uruchom
pwd
zamiast używać\W
.Prosta wersja:
Używając tego w swoim kodzie:
źródło