web-dev-qa-db-ja.com

$ 0が-bashに設定されているのはなぜですか?

最初のログインプロセス名は-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に設定されている理由は誰でも知っていますか?

8
James Shimer

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
5
Radu Rădeanu