Die Eingabeaufforderungsvariable $PS1
wurde wahrscheinlich nicht festgelegt, daher wird die integrierte Standardeinstellung \s-\v\$
verwendet.
Wenn bash interaktiv gestartet wird, wird eine Konfigurationsdatei erstellt, normalerweise entweder ~/.bashrc
oder ~/.bash_profile
, sofern vorhanden, und auf diese Weise wird eine schickere Eingabeaufforderung festgelegt. Von man bash
:
AUFRUF
[...] Wenn bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt, sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei wird nach ~ / .bash_profile, ~ / .bash_login und
~ / .profile in dieser Reihenfolge gesucht [...]
[...] Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest bash Befehle von ~ / .bashrc und führt sie aus
, sofern diese Datei vorhanden ist.
Wenn Ihre Eingabeaufforderung nicht festgelegt ist, kann dies in zwei verschiedenen Kontexten auftreten: Anmeldeshells und Nicht-Anmeldeshells. Wenn Sie einen Display-Manager verwenden, um sich direkt bei der GUI anzumelden, treten keine Anmeldeshells auf, es sei denn, Sie wechseln zu einer virtuellen Konsole (über z. B. CtrlAlt+ F1 bis F6). Sie können Ihr Bash-Anmeldeprofil jedoch in der GUI testen, indem Sie eine neue Anmeldeshell explizit öffnen : bash -l
.
Bei Nicht-Login-Shells tritt ein Problem auf
Wenn das Problem beispielsweise bei normalen GUI-Terminals auftritt, ~/.bashrc
fehlt entweder Ihr Terminal oder es wurde bearbeitet, um die Beschaffung einer globalen Datei wahrscheinlich auszuschließen /etc/bashrc
.
Wenn ~/.bashrc
nicht vorhanden, sollte ein /etc/skel/.bashrc
verwendet werden, um es für neue Benutzer zu erstellen. Kopieren Sie diese Datei einfach in Ihr Home-Verzeichnis, und Ihre Standardaufforderung sollte zur nächsten neuen Shell zurückkehren, die Sie öffnen.
Wenn ~/.bashrc
vorhanden, überprüfen Sie, ob irgendwo eine Zeile vorhanden ist, aus der Folgendes stammt /etc/bashrc
:
. /etc/bashrc
-OR-
source /etc/bashrc
Wenn nicht, überprüfen Sie, ob diese Datei vorhanden ist (zumindest in den meisten Linux-Distributionen) und fügen Sie eine solche Zeile zu Ihrer hinzu ~/.bashrc
.
Problem tritt mit Login-Shells auf
Wenn das Problem sowohl bei Login-Shells als auch bei Nicht-Login-Shells auftritt, ist das Problem wahrscheinlich dasselbe wie oben. Wenn es nur bei Login-Shells auftritt , haben Sie entweder keine der Dateien, die für Login-Shells unter dem obigen INVOCATION-Zitat angegeben sind, oder sie beziehen Ihre nicht ~/.bashrc
, was bei den meisten Linux-Distributionen normal ist. Wenn keine dieser Dateien vorhanden ist, erstellen Sie ~/.bash_profile
Folgendes:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Auf diese Weise können Sie Ihre Konfiguration größtenteils in einer Datei ( ~/.bashrc
) speichern .
Wenn Sie unabhängig davon, was Sie tun, keine Eingabeaufforderung erhalten können, können Sie eine erstellen und auf folgende ~/.bashrc
Weise einfügen:
if [ "$PS1 ]; then
PS1= .... # see below
fi
Dies liegt daran, dass $ PS1 festgelegt ist und einen Standardwert für interaktive Shells hat. Sie möchten ihn auch nicht anders festlegen, da andere Benutzer diesen Wert möglicherweise verwenden, um zu bestimmen, ob es sich um eine interaktive Umgebung handelt.
Die Bash-Manpage enthält einen Abschnitt PROMPTING, in dem beschrieben wird, wie Sie eine Eingabeaufforderung mit dynamischen Funktionen wie Ihrem Benutzernamen und dem aktuellen Arbeitsverzeichnis festlegen, z. B.:
PS1="\u \w:"
Hier finden Sie eine Anleitung zur Verwendung von Farbe . Achten Sie darauf, dass Sie nicht gedruckte Zeichen in \[
und einschließen sollten \]
(dies wird am Ende der Antwort zu Farben erläutert).