2012-03-28 17 views
1

Ich bin kein Solaris-Experte und ich versuche, einen Shell-Skript zu erstellen, die meine Aufforderung zum PWD ändern werden und die KSH einzuschlagen, und ich habe diese:

PS1 = '$ PWD $' exec bash --noprofile --rcfile/dev/null

oder

PS1 = '\ w $' exec bash --noprofile --rcfile/dev/null

Beide funktionieren nicht von einem SH. Wenn ich sie von der Kommandozeile aus hinzufüge, dann erscheint das erste Mal mein Bash auf der Eingabeaufforderung und das zweite Mal, dass PS1 = '$ PWD $' eintritt und meine Eingabeaufforderung sich ändert.

Erstens, warum PS1 = '$ PWD $' funktioniert nicht von Shell-Skript. und warum muss ich den Befehl von der Befehlszeile zweimal ausführen, um meine Ergebnisse zu erreichen.

Auch in meinem Verzeichnis export/home/syed/gibt es drei Dateien local.login, local.profile und local.shrc. Gibt es eine Möglichkeit, dass ich sie verwenden kann, wenn ich mich einloggen muss ich nicht mein Shell-Skript ausführen und nach dem Login bekomme ich Bash-Shell und meine Eingabeaufforderung, wie ich es will (ich frage zu viel, ich mag nicht die ksh as es hat keine Merkmale letzten Befehle Pfeil Erinnerung rufen, und Registerkarte auto-Vervollständigen-Funktionen)

dank Syed ...

Antwort

1

Wenn Sie innerhalb eines Skripts exec sind, wird das Skript ersetzt, nicht die übergeordnete Shell.

Versuchen Sie, das Skript zu verwenden, anstatt es auszuführen.

In Solaris können Sie auch passwd -e verwenden, um Ihre Login-Shell zu ändern.

Sie können möglicherweise ~/.profile zu Ihrem vorhandenen ~/local.profile (oder ähnlichem) symbolisieren. Beachten Sie, dass .cshrc für die C-Shell ist und nicht mit Ksh oder Bash kompatibel ist.

1

Wenn Sie möchten, dass Ihre Standard-Shell bash sein wird, ändern Sie es in/etc/passwd

0

Wenn Sie exec Bash es richtet seine eigene Umgebung von Grund auf neu. Übergeben Sie eine --rcfile mit den Einstellungen, die Sie erben möchten.