GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Nachdem ich die .bashrc bearbeitet habe, habe ich Geister in der Eingabeaufforderung?

Für diese Frage gibt es hier bereits Antworten :Warum wird meine Bash-Eingabeaufforderung abgehört, wenn ich den Verlauf durchsuche? [Duplikat]

(2 Antworten)
Vor 4 Jahren geschlossen.

Ich habe Folgendes zu meinem ~/.bashrc hinzugefügt :

export PS1="\e[0;35m[\[email protected]\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"

Leider wird es jetzt jedes Mal, wenn ich etwas langes in Bash einfüge, squiffy und Ghost tab Zeichen erscheinen überall auf dem Bildschirm und Linien fressen sich gegenseitig auf, weiß jemand warum?

Akzeptierte Antwort:

Ich hatte in der Vergangenheit auch das Problem, dass ANSI-Farbcodes die Befehlszeilennavigation durcheinander brachten; Sie müssen die ANSI-Codes um \[ \] setzen damit die Befehlsshell weiß, wie (nicht) sie als Teil der Eingabezeichenfolge berücksichtigt werden sollen.

Wie in:

export PS1="\[\e[0;35m\][\[email protected]\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"

Eine Erklärung, warum die Shell \[ benötigt und \] :Um den Prompt an den richtigen Positionen in der Zeichenmatrix eines Terminals zu zeichnen, muss die Shell die korrekte Länge des Prompt-Strings kennen, das ist die Menge an druckbarem Zeichen, ich. e. keine Steuerzeichen oder Zeichenfolgen.

Die Shell weiß jedoch nicht, welche Zeichenfolgen das Terminal für druckbar hält. Daher muss man der Shell Hinweise geben, um zwischen druckbaren und nicht druckbaren Sequenzen zu unterscheiden, was der Zweck von \[ ist und \] .


Linux
  1. Warum überprüft Bashrc, ob die aktuelle Shell interaktiv ist?

  2. Ist es Shell Portable, einen Befehl in derselben Zeile nach der Variablenzuweisung auszuführen?

  3. Verstehen Sie die Bedeutung von `$_`?

  4. Verlauf archivieren, ohne die Shell zu verlassen?

  5. .bashrc aus aktueller Shell neu generieren?

.bashrc vs. .bash_profile

Was ist die Shell unter Linux?

Anpassen der Bash-Shell

Abgekürztes aktuelles Verzeichnis in Shell-Eingabeaufforderung?

Vorrang der logischen Shell-Operatoren &&, ||?

Die While-Schleife in Shell-Skripten