如何使 ksh 表现得好像它已作为登录 shell (AIX) 调用一样?

Cam*_*ius 2 shell login ksh

当我运行该ksh命令时,它作为非登录 Shell 运行(如预期的那样)。我想要实现的是ksh作为登录 Shell运行,就像使用bash.

作为参考,bash可以通过指定-l选项,将其视为已作为登录 shell 调用。这是 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).
Run Code Online (Sandbox Code Playgroud)

这是我在 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?
Run Code Online (Sandbox Code Playgroud)

笔记:

操作系统是 AIX,这就是我所拥有的一切exec。不幸的是,我不能用以下句子替换 shell:

exec -a ksh path/to/ksh
Run Code Online (Sandbox Code Playgroud)

Ale*_*exP 6

如果您想更改登录 shell,则可以使用chsh(change shell)。如果您只是想运行一个ksh充当登录 shell的实例,请继续阅读。

ksh如果参数 0 的第一个字符是-; 如果你在ksh( ksh93or mksh, not or ksh88pdksh), zsh, yashor bash, 那么

exec -a -ksh /path/to/ksh [optional arguments]
Run Code Online (Sandbox Code Playgroud)

将用 Korn shell 的实例替换当前 shell,该实例充当登录 shell。(如果您在bash或 中zshexec -l /path/to/ksh则更短并且具有相同的效果。)

如果这些 shell 都不可用,您也可以尝试perl

perl -e 'exec {"ksh"} "-ksh"'
Run Code Online (Sandbox Code Playgroud)

  • `exec` 是一个 shell 命令;指示的命令适用于 ksh 和 bash。当 `$0` 以连字符开头时,`ksh` 表现为登录 shell。 (2认同)