Wie kann man dafür sorgen, dass sich ksh so verhält, als wäre es als Login-Shell aufgerufen worden (AIX)?

Wie kann man dafür sorgen, dass sich ksh so verhält, als wäre es als Login-Shell aufgerufen worden (AIX)?

Wenn ich den Befehl ausführe, kshwird er (wie erwartet) als Nicht-Login-Shell ausgeführt. Was ich erreichen möchte, ist die Ausführung kshals Login-Shell, wie es mit möglich ist bash.

Nur als Referenz: bashDurch Angabe der Option kann es so funktionieren, als wäre es als Login-Shell aufgerufen worden -l. Hier ist ein Auszug aus der Bash-Manpage:

BASH(1)                                                       BASH(1)

NAME
    bash - GNU Bourne-Again SHell

. . .

OPTIONS

     . . .

     -l        Make bash act as if it had been invoked as a login shell (see INVOCATION below).

Dies ist der Link zur Manpage, die ich auf dem AIX-Server sehe:

http://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds3/ksh.htm

Es gibt eine Option zum Deaktivieren der Verarbeitung der $HOME/.profileDatei (siehe Zitat unten), daher muss es eine Möglichkeit geben, die KornShell als Anmelde-Shell zu verwenden.

ksh Command

Purpose
    Invokes the Korn shell.

. . .

Flags

     . . .

     -p        
          Disables the processing of the $HOME/.profile file when you use the shell as a login shell, right?

Anmerkungen:

Das Betriebssystem ist AIX unddas ist alles, was ich habe fürexec. Leider kann ich die Shell nicht durch den folgenden Satz ersetzen:

exec -a ksh path/to/ksh

Antwort1

Wenn Sie Ihre Login-Shell ändern möchten, können Sie chsh(change shell) verwenden. Wenn Sie einfach eine Instanz von ausführen möchten, kshdie sich als Login-Shell verhält, lesen Sie weiter.

kshverhält sich wie eine Login-Shell, wenn das erste Zeichen des Arguments 0 ist -; wenn Sie sich in ksh( ksh93oder mksh, nicht ksh88noch pdksh), zsh, yashoder befinden bash, dann

exec -a -ksh /path/to/ksh [optional arguments]

ersetzt die aktuelle Shell durch eine Instanz der Korn-Shell, die sich wie eine Login-Shell verhält. (Wenn Sie sich in bashoder befinden zsh, exec -l /path/to/kshist kürzer und hat dieselbe Wirkung.)

Wenn keine dieser Shells verfügbar ist, können Sie auch Folgendes versuchen perl:

perl -e 'exec {"ksh"} "-ksh"'

verwandte Informationen