当我运行该ksh
命令时,它作为非登录外壳运行(如预期)。我想要实现的目标是ksh
作为登录外壳程序运行,就像可以使用bash
.
作为参考,bash
可以通过指定选项将其作为登录 shell 来调用-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 作为登录 shell。
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
。不幸的是,我无法用下面的句子替换 shell:
exec -a ksh path/to/ksh
答案1
如果您想更改登录 shell,则可以使用chsh
(更改 shell)。如果您只想运行一个ksh
充当登录 shell 的实例,请继续阅读。
ksh
-
如果参数 0 的第一个字符是;则表现为登录 shell如果您位于ksh
(ksh93
或mksh
,不是ksh88
也不是 pdksh)、zsh
、yash
或bash
,那么
exec -a -ksh /path/to/ksh [optional arguments]
将用 Korn shell 的实例替换当前 shell,该实例充当登录 shell。 (如果您位于bash
或中zsh
,那么 则更exec -l /path/to/ksh
短并且具有相同的效果。)
如果这些 shell 均不可用,您还可以尝试perl
:
perl -e 'exec {"ksh"} "-ksh"'