如何使 ksh 表現得好像它是作為登入 shell (AIX) 呼叫的?

如何使 ksh 表現得好像它是作為登入 shell (AIX) 呼叫的?

當我運行該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(ksh93mksh,不是ksh88也不是 pdksh)、zshyashbash,那麼

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"'

相關內容