Como fazer o ksh agir como se tivesse sido invocado como um shell de login (AIX)?

Como fazer o ksh agir como se tivesse sido invocado como um shell de login (AIX)?

Quando executo o kshcomando, ele é executado como um Shell sem login (conforme esperado). O que estou tentando alcançar é executar kshcomo um Login Shell, como pode ser feito com bash.

Apenas como referência, bashpode agir como se tivesse sido invocado como um shell de login especificando a -lopção. Aqui está um extrato da página de manual do bash:

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).

Este é o link para a página man que vejo no servidor AIX:

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

Existe uma opção para desabilitar o processamento do $HOME/.profilearquivo (veja a citação abaixo), então deve haver uma maneira de usar o KornShell como shell de login.

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?

Notas:

O sistema operacional é AIX eisso é tudo que eu tenho paraexec. Infelizmente, não posso substituir o shell pela seguinte frase:

exec -a ksh path/to/ksh

Responder1

Se você quiser alterar seu shell de login, poderá usar chsh(alterar shell). Se você simplesmente deseja executar uma instância kshque se comporte como um shell de login, continue lendo.

kshcomporta-se como um shell de login se o primeiro caractere do argumento 0 for -; se você estiver em ksh( ksh93ou mksh, não ksh88nem pdksh), zshou yash, bashentão

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

substituirá o shell atual por uma instância do shell Korn que se comporta como um shell de login. (Se você estiver em bashou zsh, então exec -l /path/to/kshé mais curto e tem o mesmo efeito.)

Se nenhum desses shells estiver disponível, você também pode tentar perl:

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

informação relacionada