%3F.png)
Quando executo o ksh
comando, ele é executado como um Shell sem login (conforme esperado). O que estou tentando alcançar é executar ksh
como um Login Shell, como pode ser feito com bash
.
Apenas como referência, bash
pode agir como se tivesse sido invocado como um shell de login especificando a -l
opçã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/.profile
arquivo (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 ksh
que se comporte como um shell de login, continue lendo.
ksh
comporta-se como um shell de login se o primeiro caractere do argumento 0 for -
; se você estiver em ksh
( ksh93
ou mksh
, não ksh88
nem pdksh), zsh
ou yash
, bash
entã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 bash
ou 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"'