Auf einem meiner Server lautet die Eingabeaufforderung [user @ host path] ... und ich kann "tab" drücken, um den Pfad automatisch zu füllen.
Aber auf meinem neuen Ubuntu-Server ist es nur ein Dollarzeichen?
Auf einem meiner Server lautet die Eingabeaufforderung [user @ host path] ... und ich kann "tab" drücken, um den Pfad automatisch zu füllen.
Aber auf meinem neuen Ubuntu-Server ist es nur ein Dollarzeichen?
Antworten:
Da Sie zwei Fragen stellen, beantworte ich beide.
Weil Sie die Shell entweder nicht unterstützen oder die Tab-Vervollständigung nicht aktiviert ist.
Um dies zu beheben, müssen Sie zuerst herausfinden, was Ihre Shell ist. Laufen Sie auf der Maschine, deren Shell Ihnen gefällt
echo $SHELL
Sie können die gemeinsame sehen /bin/bash
, oder etwas weniger häufig wie /bin/tcsh
, /bin/zsh
oder etwas ganz anderes.
Jetzt können Sie Ihre Shell auf dem Ubuntu-Rechner ändern. Stellen Sie auf diesem Computer zunächst sicher, dass die gewünschte Shell vorhanden ist. Da sich die Shell möglicherweise nicht am selben Ort auf dem Ubuntu-Computer wie auf dem anderen befindet, überprüfen Sie den Ort, indem Sie Folgendes eingeben
which bash
Dies wird Ihnen den Pfad der Shell Sie wollen, so etwas wie /bin/bash
, /usr/bin/bash
oder /usr/local/bin/bash
. Natürlich, wenn Sie eine Shell anders als bash wollen, werden Sie sagen which tcsh
, which zsh
oder ähnlich.
Wenn Sie keinen Pfad sehen, sondern stattdessen bash not found
, müssen Sie das entsprechende Paket installieren und erneut verwenden which
, um herauszufinden, wo die Shell installiert wurde.
Mit dem Pfad der von Ihnen gewählten Shell können Sie schließlich Ihre Shell ändern, indem Sie ausführen
chsh -s /bin/bash
Ersetzen /bin/bash
durch was auch immer der geeignete Pfad für Ihre Shell der Wahl ist.
Aufgrund Ihres prompt Umgebungsvariablen $PS1
, $PS2
und so weiter. Diese Dinge sind normalerweise nicht zwischen Shells übertragbar. Hier sind einige Links für mögliche Kandidaten:
bash
verfügt über ein umfangreiches Handbuch mit Seiten zu Bash-Variablen (einschließlich PS1
& c) und zum Drucken einer Eingabeaufforderung (die den LangnamenPROMPT_COMMAND
für beschreibt PS1
). Fügen Sie die folgende Zeile zu Ihrer hinzu~/.bashrc
export PS1='[\u@\h \w] '
tcsh
verfügt über ein Online-Handbuch (nur die Manpage) mit einem Abschnitt zu den Umgebungsvariablen für Eingabeaufforderungen . Fügen Sie die folgende Zeile zu Ihrer hinzu~/.tcshrc
set prompt='[%n@%m %~] '
zsh
verfügt über ein Benutzerhandbuch mit einer einfachen Anleitung zu Eingabeaufforderungen sowie ein Handbuch mit einer sehr detaillierten Referenz zu Prompt Expansion . Fügen Sie die folgende Zeile zu Ihrer hinzu~/.zshrc
export PS1='[%n@%m %~] '
Bash ist nicht die einzige Hülle.
Ihr Problem kann darin bestehen, dass Sie kein .profile oder .bashrc haben, mit dem PS1 festgelegt wird, oder dass Ihre Anmeldeshell überhaupt nicht bash ist.
Bash wird beispielsweise gnu readline
zum Vervollständigen von Registerkarten verwendet. Dies ist ein kompliziertes Thema und readline hat sogar eine eigene Konfigurationsdatei für jeden Benutzer.
Siehe man bash
, man sh
und man 3 readline
. Bash reagiert auf --version
. Auf vielen Linux-Systemen /bin/sh
ist Bash eigentlich keine, sondern meist eine verkrüppelte Version von ash
.
dash
statt ash
? Ich dachte, ich lese so etwas
Ich denke, Sie verwenden nicht bash, sondern sh und Ihre Eingabeaufforderung ist nicht richtig eingestellt (falls dies mit sh überhaupt möglich ist).
Sie können Ihre aktuelle Shell abrufen, indem Sie Folgendes eingeben: echo $SHELL
Wenn Sie Bash starten möchten, geben Sie einfach bash
sh
. Durch Echo $SHELL
wird eine aufgerufene Umgebungsvariable gedruckt SHELL
. Diese Umgebungsvariable zeigt einfach auf die Shell und wird nur durch Bash gesetzt. Es ist nahezu nutzlos festzustellen, welche Shell ausgeführt wird, da dies nur schwach darauf hinweist, dass einige übergeordnete Elemente des aktuellen Prozesses möglicherweise bash waren.
/bin/sh
yes. Aber ich kenne keine Muschel, deren Name ist sh
. Ich kann mich ash
, ksh
, csh
, bash
, zsh
, und tcsh
. Das erste ist das übliche / bin / sh unter Linux und NetBSD, das letzte ist die übliche FreeBSD-Shell und die anderen sind optionale Shells. In vielen Desktop-Umgebungen wird die Anmeldeshell des Benutzers auf bash geändert, während / bin / sh als ash belassen wird.
sh
ist die Bourne-Shell. en.wikipedia.org/wiki/Bourne_shell Einige Systeme (Solaris) verfügen noch über eine Version der Bourne-Shell, die nicht nur eine Kopie einer der Neuimplementierungen ist (ash, dash, bash, ksh, zsh).
Sie müssen eine Variable mit dem Namen PS1 in einem Ihrer Anmeldeskripts festlegen, z. B. / etc / profile oder ~ / .bashrc. Dies hängt von Ihrer Distribution ab.
Beispiel: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
, um den Namen des aktuellen Arbeitsverzeichnisses zu drucken. Und sagen Sie, dass die Tab-Vervollständigung auch nicht funktioniert? (Auf einigen Computern, die ich verwende, erhalte ich diese kurze Eingabeaufforderung nur, wenn ich mich als root anmelde, und ich lasse das gerne als Warnung an Ort und Stelle. Wenn überhaupt, muss man sich selten als root anmelden: Sie verwenden kein root sind Sie?)