2012-05-09 15 views
1

私はbashの初心者で一般的にシェルを使用しています。私は、端末を開くと、それはこのようなプロンプトを思い付く:myusernameと指定が青色である、dev94が赤であると>が緑色であるbashプロンプト - 終了の意味

[email protected]:~> 

(私はこの色の設定は、私の.bashrcにおそらくあることを理解ファイル)。ここに私の質問は:私は、exitと入力し、Enterキーを押したとき、これは起こる:

[email protected]:~> 
exit 
exit 
[email protected]:~> 

myusernameと指定する@ dev94:〜>任意の色なしすべて黒です。私が終了をタイプする前に色の違いと私が終了を入力した後に無色のものとの違いは何ですか? (最初の出口だけを入力しましたが、2番目の出口はEnterキーを押したときに出ます)2番目の出口はどこから来ているのだろうか?

もう一度exit(無色のプロンプトで)と入力してEnterキーを押すと、シェルが終了します。シェルプロセスが終了してウィンドウが閉じていることが分かります。私の2番目の質問: 私は最初に着色されたプロンプトで終了をタイプしたとき、それは終わりませんでした。最初の終了コマンドのために、色付きのプロンプトから無色のプロンプトに移動したのはなぜですか?

ありがとうございました!

+5

あなたの '.bashrc '(または' .profile'など)がまったく新しいシェルを起動するように思えます...その動作が意味をなさないように見えるだけです。 'exit'コマンドの前後に' echo $$ 'を試してください。それは同じプロセスかどうかをあなたに伝えるはずです。 – FatalError

+0

私は@FatalErrorに同意します – DonCallisto

+0

echo $$は終了後に別のプロセスIDを出力します。私は.bashrcファイルがありますが、.profileファイルはありません。 .bashrcでexitという単語を探して、コマンドが何かをするように設定されているかどうかを調べました。しかし、.bashrcファイルに終了語はありません – Romonov

答えて

0

たぶん、あなたのシェルは、SHELL変数を設定しますが、これは必須ではありません、それは必ずしも正しくない。

echo $SHELL 
/bin/bash 

あなたのプロセスリストで--forestのps斧で見れば:

ps ax --forest 

自分自身の内側のシェルの上に、外側のシェルの上にpsコマンドがあります。

+0

はい。echo $ SHELLには /bin/csh があり、ps ax --forestにはこれ以上が与えられます 10013 pts/9 Ss 0:00 \ _ -shと 10038 pts/9 S 0:00 | \ _/bin/bash といいます。一度exitを入力してecho $$を入力すると、10013になります。 これは最初にexitに入ると、10013のPIDを持つシェルに移動しますか? これは、色付きのプロンプトと無色のプロンプトの両方でecho $ SHELLとタイプすると出力となる/ bin/cshとどのように関連していますか?ありがとう! – Romonov

+0

残念ながら、状況はちょっと複雑ですが、あなたの意見は正しいです。多くのシステムでは、shは別のシェルへのシンボリックリンクです(たとえば、bashやダッシュなど)。しかし、それは同じ動作を意味しません。異なる設定ファイルが読み込まれているかどうかは、シェルがリフレクションによってどのように呼び出されたかを知り、シンタックス機能をオンまたはオフにします。しかし、私はbashとcshがbashとcshになると期待しています。 –

+0

これはシェルディストリビューションに特有のものだと思います。私はこれらの観察をレッドハットのシステム上で行っているからです。 ubuntuシステムでは、最初の出口で終了します。 btw、redhatシステムの$ SHELLは/ bin/cshを返しますが、Ubuntuのシェルは/ bin/bashを与えます。私はredhatシステムでcshを実行していると思います。混乱があれば申し訳ありません。そして、明るい議論に感謝します。 – Romonov

関連する問題