Bash
為什麼使用–login時bash.exe會執行兩次?
執行 cygwin 時,我使用的快捷方式如下:
C:\cygwin\bin\bash.exe --login -i
我不清楚為什麼 bash.exe 執行兩次。我看到兩個程序在任務管理器中執行。
echo .Bashrc file has been processed
如果我在文件底部放置一個回顯語句,.bashrc
我將看到回顯輸出在控制台視窗中出現兩次。是什麼
bash.exe --login
導致程序執行兩次?(這是預期的行為嗎?)
作為
bash
登錄 shell 的 shell 將 source~/.bash_profile
。Marcel 的 Cygwin 系統上的
~/.bash_profile
文件包含以下行[[ -z $SSH_AGENT_PID && -z $DISPLAY ]] && exec -l ssh-agent $SHELL -c "bash --login"
ssh-agent
如果目前 shell 環境中沒有執行這樣的代理並且沒有可用的 X11 顯示,這將啟動。SSH 代理將啟動兩個新bash
的 shell,一個非互動式 shell 和一個登錄 shell(登錄 shell 將跳過上面的行,因為它已經$SSH_AGENT_PID
設置好了)。SSH 代理通過以exec
.
bash
可以看到的兩個過程是
- 由
ssh-agent
(這是$SHELL -c
)開始的那個,和- 一個由 開始
$SHELL -c
,呼叫bash --login
.對我來說,看起來這條線可以簡化為
[[ -z $SSH_AGENT_PID && -z $DISPLAY ]] && exec -l ssh-agent bash --login
這將擺脫
ssh-agent
僅用於執行的額外外殼bash --login
。