Ich möchte den aktuellen Pfad in der sh-Eingabeaufforderung anzeigen (nicht in der bash-Shell), in der derzeit nur "#" angezeigt wird. Ich habe versucht, dies einzuführen
env PS1="$(whoami)@$(hostname):$(pwd)"
und
set PS1="$(whoami)@$(hostname):$(pwd)"
in /etc/profile
.
Dies wird jedoch nicht aktualisiert, wenn das Verzeichnis geändert oder der Benutzer geändert wird. Bitte schlagen Sie einen Weg vor, um diese Dynamik zu erreichen.
$()
ein separates Programm ausführt. es wäre schneller Umgebungsvariablen zu verwenden, wie zum Beispiel$LOGNAME
,$HOSTNAME
und$PWD
stattdessen.Antworten:
Befehlsersetzungen in doppelten Anführungszeichen werden
"
sofort erweitert. Das ist nicht das, was Sie für Ihre Aufforderung wollen. Einfache Anführungszeichen'
behalten die Ersetzungen bei,$PS1
die dann nur beim Anzeigen der Eingabeaufforderung erweitert werden. Daher sollte dies funktionieren:Wenn Sie das übliche Dollarzeichen und ein Leerzeichen am Ende Ihrer Eingabeaufforderung wünschen, fügen Sie es einfach
$
am Ende hinzu (kein Escape- Zeichen erforderlich):export PS1='$(whoami)@$(hostname):$(pwd)$ '
quelle
export PS1='$(whoami)@$(hostname):$(pwd)$'
ich in deiner Antwort "Set" auf "Exportieren" geändert habe, hat es wie ein Zauber funktioniert. Ich habe die Änderungen in gespeichert/etc/profile
. Vielen Dank.set
für mich gearbeitet (aber ich hatte keinen Muttersprachlersh
). Aber ich ändere es soexport
, dass es Ihrem Setup entspricht./etc/profile
(siehe Frage) oder~/.profile
?!foo@localhost:/home/fools -la
bei der Benutzungls -la
.quelle
\u@\h:\w>
als meine EingabeaufforderungBusyBox v1.19.4 built-in shell (ash)
.Dieser Befehl funktioniert bei mir.
Wobei
\ u = Benutzername
\ h = Hostname
\ W Name des aktuellen Ordners (nicht vollständiger Pfad)
quelle
Man könnte überlegen, die Eingabeaufforderung durch Hinzufügen einiger Farben zu verbessern. Zum Beispiel:
quelle
Eine Antwort bestand darin, einfache Anführungszeichen anstelle von doppelten Anführungszeichen zu verwenden, dies ist jedoch nicht ganz die richtige Antwort. Was Sie wirklich tun möchten, ist die Verschiebung der Auswertung des Codes in Ihrer Eingabeaufforderung, bis die Eingabeaufforderung verwendet wird.
Setzt die Eingabeaufforderung ab dem Befehl set auf das Arbeitsverzeichnis.
Erweitert NICHT $ (pwd). Stattdessen wird PS1 auf den Literalwert von $ (pwd) gesetzt.
Testen / Verstehen Sie dies, indem Sie Folgendes ausführen:
. Wenn Sie die Zeichenfolge $ pwd sehen, funktioniert Ihre Eingabeaufforderung. Wenn Sie den Literalpfad sehen, ist die Eingabeaufforderung unterbrochen, weil sie statisch festgelegt wurde
quelle
Verwenden Sie den folgenden Befehl, um wie in der Kontrollleiste festzulegen.
exportiere PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
quelle