몇 가지 다른 쉘 스크립트에서 이 명령을 본 적이 있습니다.
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