--loginを使用するとbash.exeが2回実行されるのはなぜですか?

--loginを使用するとbash.exeが2回実行されるのはなぜですか?

cygwinを実行するときに使用するショートカットは次のとおりです。

C:\cygwin\bin\bash.exe --login -i

bash.exeがなぜ2回実行されるのかわかりません。タスクマネージャで、2つのプロセスが実行されていることを確認できます。echo .Bashrc file has been processedファイルの下部にechoステートメントを配置すると、.bashrcコンソールウィンドウにecho出力が2回表示されることがわかります。

ここに画像の説明を入力してください。

bash.exe --loginプロセスが2回実行される原因は何ですか? (これは予想される動作ですか?)

ベストアンサー1

bashログインシェルであるシェルは~/.bash_profile

MarcelのCygwinシステムにあるファイルには、~/.bash_profile次の行が含まれています。

[[ -z $SSH_AGENT_PID && -z $DISPLAY ]] && exec -l ssh-agent $SHELL -c "bash --login"

ssh-agent現在のシェル環境でそのエージェントが実行されておらず、X11ディスプレイが利用できない場合、これは開始されます。 SSHエージェントは、bash非対話型シェルとログインシェルの2つの新しいシェルを起動します(ログインシェルはすでに設定されているため、上記の行を$SSH_AGENT_PIDスキップします)。 SSHエージェントはで始まるシェルを置き換えますexec

bash表示できる2つのプロセスは次のとおりです。

  1. ssh-agent(これは)で$SHELL -c始まり、
  2. $SHELL -c一つは、呼び出しで始まりますbash --login

私にとって、この行は次のように単純化できるようです。

[[ -z $SSH_AGENT_PID && -z $DISPLAY ]] && exec -l ssh-agent bash --login

ssh-agentこれにより、単に実行用の追加のシェルが削除されますbash --login

おすすめ記事