最初のログインプロセス名は-bash
に設定されているようですが、サブシェルを実行するとbash
になります。例えば:
root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash
-bash
により、. /usr/share/debconf/confmodule
などの一部のスクリプトが失敗します
exec /usr/share/debconf/frontend -bash
Can't exec "-bash": No such file or directory at /usr/share/Perl/5.14/IPC/Open3.pm line 186.
open2: exec of -bash failed at /usr/share/Perl5/Debconf/ConfModule.pm line 59
$0
が-bash
に設定されている理由は誰でも知っていますか?
echo $0
コマンドの出力が-bash
である場合、bash
がログインシェルとして呼び出されたことを意味します。 man bash
は126行目のどこかで言っています:
A login Shell is one whose first character of argument zero is a -, or one started with the --login option.
詳細については、 ログインシェルと非ログインシェルの違い を参照してください。
シェルはまだ/bin/bash
(これはecho $Shell
コマンドで確認できます)であり、通常どおりエラーが発生するコマンドを使用することをお勧めします。
exec /usr/share/debconf/frontend bash