%3F.png)
コマンドを実行すると、ksh
非ログイン シェルとして実行されます (予想どおり)。 私が実現しようとしているのは、ksh
で実行できるのと同じように、ログイン シェルとして実行することです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"'