%3F.png)
Когда я запускаю ksh
команду, она запускается как Non-Login Shell (как и ожидалось). Я пытаюсь добиться запуска ksh
как Login Shell, как это можно сделать с помощью bash
.
Просто в качестве справки, bash
может действовать так, как если бы он был вызван как оболочка входа, указав опцию -l
. Вот выдержка из страницы руководства 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).
Вот ссылка на страницу руководства, которую я вижу на сервере AIX:
http://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds3/ksh.htm
Существует возможность отключить обработку файла $HOME/.profile
(см. цитату ниже), поэтому должен быть способ использовать KornShell в качестве оболочки входа.
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?
Примечания:
Операционная система — AIX иэто все, что у меня есть дляexec
. К сожалению, я не могу заменить оболочку следующим предложением:
exec -a ksh path/to/ksh
решение1
Если вы хотите изменить свою оболочку входа, то вы можете использовать chsh
(изменить оболочку). Если вы просто хотите запустить экземпляр, ksh
который ведет себя как оболочка входа, то читайте дальше.
ksh
ведет себя как оболочка входа в систему, если первый символ аргумента 0 — -
; если вы находитесь в ksh
( ksh93
или mksh
, не ksh88
или pdksh), zsh
, yash
или bash
, то
exec -a -ksh /path/to/ksh [optional arguments]
заменит текущую оболочку на экземпляр оболочки Korn, которая ведет себя как оболочка входа в систему. (Если вы находитесь в bash
или zsh
, то exec -l /path/to/ksh
это короче и имеет тот же эффект.)
Если ни одна из этих оболочек недоступна, вы также можете попробовать perl
:
perl -e 'exec {"ksh"} "-ksh"'