Chciałbym wyświetlić bieżącą ścieżkę w wierszu polecenia sh (bez powłoki bash), która obecnie pokazuje tylko „#”, próbowałem z wprowadzeniem tego
env PS1="$(whoami)@$(hostname):$(pwd)"
i
set PS1="$(whoami)@$(hostname):$(pwd)"
w /etc/profile
.
Ale to oczywiste, że nie odświeża się po zmianie katalogu lub zmianie użytkownika. Proszę zasugerować sposób, aby uczynić to dynamicznym.
$()
uruchamia osobny program; byłoby szybciej używać zmiennych środowiskowych, takich jak$LOGNAME
,$HOSTNAME
i$PWD
zamiast tego.Odpowiedzi:
Podstawienia poleceń w podwójnych cudzysłowach
"
są natychmiast rozszerzane. To nie jest to, czego oczekujesz. Pojedyncze cudzysłowy'
zachowają podstawienia, w$PS1
których następnie są rozwijane tylko podczas wyświetlania monitu. Dlatego powinno to działać:Jeśli chcesz zwykły znak dolara i spację na końcu monitu, po prostu dodaj
$
na końcu (nie jest konieczne ucieczka):export PS1='$(whoami)@$(hostname):$(pwd)$ '
źródło
export PS1='$(whoami)@$(hostname):$(pwd)$'
zmiany w/etc/profile
. Dziękuję Ci.set
pracował dla mnie (ale nie miałem ojczystegosh
). Ale zmienię goexport
na zgodny z twoją konfiguracją./etc/profile
(patrz pytanie) lub~/.profile
?!foo@localhost:/home/fools -la
podczas korzystanials -la
.źródło
\u@\h:\w>
jakoBusyBox v1.19.4 built-in shell (ash)
.To polecenie działa dla mnie.
Gdzie
\ u = nazwa użytkownika
\ h
= nazwa hosta \ W Nazwa bieżącego folderu (niepełna ścieżka)
źródło
Można rozważyć ulepszenie monitu przez dodanie kilku kolorów. Na przykład:
źródło
Jedną z odpowiedzi było użycie pojedynczych cudzysłowów zamiast podwójnych, jednak nie jest to pełna poprawna odpowiedź. To, co naprawdę chcesz zrobić, to odroczyć ocenę kodu w zachęcie, aż zostanie użyty.
ustawia monit do katalogu roboczego zgodnie z poleceniem set.
NIE rozwija $ (pwd). Zamiast tego PS1 jest ustawiony na literalną wartość $ (pwd).
Przetestuj / zrozum to, uruchamiając:
. Jeśli zobaczysz ciąg: $ pwd, Twój monit działa. Jeśli widzisz literalną ścieżkę, monit jest przerywany, ponieważ został ustawiony statycznie
źródło
Użyj poniższego polecenia, aby ustawić jak w panelu.
eksport PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
źródło