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


8

最初のログインプロセス名はに設定されているよう-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ますか?


1
@RaduRădeanu猫の役に立たない使用が発見されました!
gniourf_gniourf 2013年

回答:


5

echo $0コマンドの出力がである場合、-bashそれはbashログインシェルとして呼び出されたことを意味し ます。man bash126行目のどこかで言う:

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

おかげで、ログインはログインシェルプロセス名に「-」を正しく追加しているようです。それが私の質問に答えます。
James Shimer 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.