Ändern Sie die Cygwin-Eingabeaufforderung

Antworten:

26

Die PS1Umgebungsvariable steuert die Eingabeaufforderung:

PS1='\w $ '

Weitere Informationen zu diesem und anderen Konfigurationsthemen für Eingabeaufforderungen erhalten Sie im Abschnitt "PROMPTING" man bash(unter der Annahme, dass bashes sich um Ihre Shell handelt).

Bearbeiten Sie Ihre ~/.bashrcDatei, um diese Änderung dauerhaft zu machen, und fügen Sie die obige Zeile hinzu.

Greg Hewgill
quelle
1
~ / .bashrc wird für eine Login-Shell nicht ausgeführt. Aktualisieren Sie stattdessen ~ / .bash_profile. Ich verwende die folgende Eingabeaufforderungszeichenfolge, die einige andere nützliche Informationen enthält, nicht nur den Pfad: PS1 = '[\ e [32m] \ t [\ e [33m] \ w [\ e [31m] \! [\ e [0m] \ $ '
Bobmcn
1
Vergessen Sie nicht, dass normalerweise .profile .bashrc-Quellen sind, sodass eine Anmeldeshell mit denselben Inhalten wie eine Nicht-Anmeldeshell und dem Inhalt von .profile initialisiert wird . Wenn das der Fall ist, schlägt das Einfügen Ihrer neuen Eingabeaufforderung in .bashrc zwei Fliegen mit einer Klappe.
1

Eine Login-Shell ist eine Shell, deren erstes Zeichen des Arguments Null ein - ist, oder eine Shell, die mit der Option --login gestartet wurde. 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 sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle von der ersten Datei aus, die vorhanden und lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu unterbinden. 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.

Also kommt es darauf an ... ich benutze das --login nicht, also muss ich es zu ~ / .bashrc hinzufügen

jr00n
quelle
1

Ich bin mir nicht sicher, warum weniger Kontext besser ist als mehr ... Die Tatsache, dass die Eingabeaufforderung eine neue Zeile enthält, bedeutet, dass die Länge der Eingabeaufforderung kein Problem sein sollte. Versuchen Sie Folgendes:

PS1='\[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

oder

export PS1='\[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

Dies gibt Ihnen eine farbige Eingabeaufforderung:

/full/path/to/current/folder
$your command text here

Auf diese Weise sehen Sie immer den vollständigen Ordnerkontext, erhalten aber dennoch eine vollständige Zeile für die Texteingabe. (Ich habe das übliche Leerzeichen nach dem '$' weggelassen, weil es der Klarheit halber farbig ist).

Colours are:
    1. '/full/path/...' = yellow;
    2. '$' (on next line) = cyan;
    3. 'your command text...' = light grey.

Für diejenigen, die auch den Kontext 'user @ hostname' wollen:

PS1='\[\e[1;32m\]\u\[\e[1;35m\]@\[\e[1;32m\]\h \[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

oder

export PS1='\[\e[1;32m\]\u\[\e[1;35m\]@\[\e[1;32m\]\h \[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

Dies gibt Ihnen eine farbige Eingabeaufforderung:

user@hostname /full/path/to/current/folder
$your command text here

Das ist meine Vorliebe.

Colours are:
    1. 'user' = (light) green;
    2. '@' = pink;
    3. 'hostname' = (light) green;
    4. '/full/path/...' = yellow;
    5. '$' (on next line) = cyan;
    6. 'your command text...' = light grey.

(Nein, in diesem Beitrag gibt es keine Rechtschreibfehler - Queen's English;))

Skeetastax
quelle
1

.bashrc hat bei mir nicht funktioniert. Ich habe dies am Ende von / etc / profile hinzugefügt und es hat funktioniert:

export PS1="\[\e[33m\]\w\[\e[0m\] \$ "

Ich verwende Cygwin Version 2.11.2 (neueste Version vom 18.12.2018).

Samuel
quelle
0

Fügen Sie dies in Ihre ~ / .bashrc ein. Gibt eine farbige Eingabeaufforderung und hält den Status in einer einzelnen Zeile.

export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ "
Sandeep
quelle