exec $SHELL -l은 무엇을 합니까?

exec $SHELL -l은 무엇을 합니까?

몇 가지 다른 쉘 스크립트에서 이 명령을 본 적이 있습니다.

exec $SHELL -l

...종종 다음의 대안으로 사용됩니다.

source ~/.profile

뭐 하세요 exec $SHELL -l?

답변1

exec 명령은 현재 프로세스 이미지(실행 파일 또는 프로그램)를 새 프로세스 이미지(exec라는 인수)로 바꿉니다. $SHELL에 실행 파일 이름이 포함되어 있으면(일반적으로 그렇습니다) exec는 실행 중인 셸 대신 exe를 시작합니다.

그러나 이는 "source"를 사용하여 명령 파일을 읽는 것과는 매우 다른 작업입니다. source 명령은 지정된 파일을 읽고 내용을 한 줄씩 실행합니다.현재 쉘의 명령줄에 입력하는 것과 같습니다.

답변2

쉘( $SHELL)을 로그인 쉘로 호출합니다.

Bash 매뉴얼 페이지에서

-l       Make bash act as if it had been invoked as a login shell 
         (see INVOCATION below).

자세한 내용은 매뉴얼 페이지의 INVOCATION 섹션을 읽어 보시기 바랍니다.

TL;박사;

결론은 Bash가 호출될 때 어떤 파일을 가져올지 알려준다는 것입니다. 하나 또는 $HOME/.bash_profile( ) .-l$HOME/.bashrc-i

인용하다

관련 정보