Kommt auf deine Schale an.
Dieser Artikel zeigt mehrere Methoden.
Ich persönlich verwende zsh, das eine praktische precmd () - Funktion hat, die vor jeder Aufforderung ausgeführt wird.
precmd () { print -Pn "\e]2;%n@%M | %~\a" } # title bar prompt
Obwohl die anderen Fragen bash-Methoden auflisten, nennen sie Alias cd. Bash bietet eine inhärente Methode, die nur die Eingabeaufforderung verkettet.
bash
bash liefert eine Variable PROMPT_COMMAND, die einen Befehl enthält, der vor der Aufforderung ausgeführt werden soll. Dieses Beispiel (in ~ / .bashrc eingefügt) setzt den Titel auf "Benutzername @ Hostname: Verzeichnis":
PROMPT_COMMAND='echo -ne "\033]0;$@$: $\007"'
Dabei ist \ 033 der Zeichencode für ESC und \ 007 für BEL. Beachten Sie, dass das Zitieren hier wichtig ist: Variablen werden in "..." erweitert und nicht in "...". PROMPT_COMMAND wird also auf einen nicht erweiterten Wert gesetzt, aber die Variablen in "..." werden erweitert, wenn PROMPT_COMMAND verwendet wird.
PWD erstellt jedoch den vollständigen Verzeichnispfad. Wenn Sie die Abkürzung '~' verwenden möchten, müssen Sie die Escape-Zeichenfolge in die Eingabeaufforderung einbetten, sodass wir die folgenden Eingabeaufforderungen der Shell nutzen können:
\u expands to $USERNAME \h expands to hostname up to first '.' \w expands to directory, replacing $HOME with '~' \[...\] embeds a sequence of non-printing characters
Folgendes erzeugt also eine Eingabeaufforderung von "bash $" und einen Xterm-Titel von "Benutzername @ Hostname: Verzeichnis" ...
case $TERM in xterm*) PS1="\[\033]0;\u@\h: \w\007\]bash\$ " ;; *) PS1="bash\$ " ;; esac
Beachten Sie die Verwendung von [...], mit dem bash die nicht druckenden Steuerzeichen ignoriert, wenn Sie die Breite der Eingabeaufforderung berechnen. Ansonsten werden die Zeilenbearbeitungsbefehle beim Positionieren des Cursors verwirrt.