Wie kann eine benutzerdefinierte Eingabeaufforderung in KornShell angezeigt werden, um den Hostnamen und das aktuelle Verzeichnis anzuzeigen?

8

Ich verwende KornShell (ksh) unter Solaris und momentan ist meine PS1 env var:

PS1="${HOSTNAME}:${PWD} $ "

Und die Eingabeaufforderung wird angezeigt: hostname:/full/path/to/current/directory $

Ich möchte jedoch Folgendes anzeigen: hostname:directory $

Mit anderen Worten, wie kann ich nur den Hostnamen und den Namen des aktuellen Verzeichnisses anzeigen, d. h. tmp oder ~ oder public_html usw.?

    
daveslab 23.07.2009, 13:19
quelle

7 Antworten

16

Wenn Sie die ksh man-Seite lesen möchten,

%Vor%

Getestet auf Standard-ksh unter SunOS 5.8

    
Rudi Bierach 23.07.2009, 13:49
quelle
10

Okay, ein wenig alt und ein bisschen spät, aber das ist es, was ich in Kornshell verwende:

%Vor%

Dies ergibt eine Eingabeaufforderung, die in BASH dem PS1="\u@\h:\w\n$ " entspricht.

Zum Beispiel:

%Vor%

Ich mag eine zweizeilige Eingabeaufforderung, weil ich manchmal sehr lange Verzeichnisnamen habe und sie einen Großteil der Befehlszeile beanspruchen können. Wenn Sie eine Eingabeaufforderung mit einer Zeile wünschen, lassen Sie das "\ n" bei der letzten Druckanweisung einfach weg:

%Vor%

Das entspricht PS1="\u@\h:\w$ " in BASH:

%Vor%

Es ist nicht ganz so einfach wie das Einrichten einer BASH-Eingabeaufforderung, aber Sie bekommen die Idee. Schreiben Sie einfach ein Skript für PS1 und Kornshell führt es aus.

Für Solaris und andere ältere Versionen von Kornshell

Ich habe festgestellt, dass das oben genannte nicht unter Solaris funktioniert. Stattdessen müssen Sie es auf die wirklich hackische Weise tun ...

  • Stellen Sie in% code_% sicher, dass .profile ist eingestellt. Dies ist wahrscheinlich richtig für Sie eingerichtet.

  • In Ihrer ENV="$HOME/.kshrc"; export ENV -Datei werden Sie zwei Dinge tun

    1. Sie definieren eine Funktion namens .kshrc . Diese Funktion ändert sich in das angegebene Verzeichnis und setzt dann Ihre PS1-Variable basierend auf Ihrem Passwort.
    2. Sie werden einen Alias _cd einrichten, um die Funktion cd auszuführen.

Dies ist der relevante Teil der Datei _cd :

%Vor%

Dies wird Ihre Eingabeaufforderung als die gleichwertige BASH .kshrc setzen. Es ist nicht schön, aber es funktioniert.

    
David W. 08.08.2011 15:58
quelle
3

ENV = ~ / .kshrc, und dann in Ihrer .kshrc:

%Vor%

Brad

    
Brad 11.12.2011 22:50
quelle
1
%Vor%     
Robin Hoo 09.11.2012 10:13
quelle
-1
%Vor%     
user8585881 10.09.2017 00:14
quelle
-2

und ...

wenn du für den größten Teil deiner Bemühungen zwischen zwei Muscheln arbeitest [ksh and bourne sh] und eine Verzeichnisverfolgungsanzeige in Ihrer Befehlszeile wünschen dann kann PWD leicht in ksh substituiert werden und wenn Sie / usr / xpg4 / bin / sh für Ihre sh SHELL verwenden, wird es auch dort funktionieren

    
Zzeon 25.02.2016 19:15
quelle