답변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
비대화형 쉘과 로그인 쉘이라는 두 개의 새로운 쉘을 시작합니다(로그인 쉘은 이미 $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
.
답변2
@Kusalananda는 트리거 .bash_profile이 호출된다는 점을 지적했습니다 --login
. 내 .bash_profile에는 다음 줄이 있습니다
[[ -z $SSH_AGENT_PID && -z $DISPLAY ]] && exec -l ssh-agent $SHELL -c "bash --login"
그래서 매번 두 번째 카니발이 시작됩니다.