본문 바로가기
Shell

[macOS] chatGPT에게 물어 본 zshrc 와 .zprofile PART2 - zprofile의 파일 변경 사항 적용하기, 로그인 세션이 발생되는 시점

by Gina Sim 2023. 5. 24.

2023.05.24 - [Shell] - [macOS] chatGPT에게 물어 본 zshrc 와 .zprofile PART1 - 설명 및 비교, 읽히는 시점

앞선 포스팅에서 대체 zprofile은 언제 실행되는 건지 의문을 가지기까지 chatGPT와의 대화가 정리되었다.

이번 포스팅에서는 그래서 대체 zprofile은 대체 언제 읽힐지, 어떻게 해야 로그인 세션이 실행될지 찾아가는 과정을 정리했다.


 

대체 zprofile은 언제 실행되는 거지?

zprofile에 환경 설정을 변경하면 어떻게 해야 적용시킬 수 있는 걸까? 

그 방법에 대해 물어보았다. 그랬더니 OMG... 너무 어려운 방법을 알려준다

 

Q8. 그럼 zprofile 파일에 추가한 환경 설정을 적용하려면 어떻게 해야 해?

A8. 

만약 터미널을 종료하고 다시 실행한 후에도 `.zprofile` 파일에 추가한 환경 설정을 적용하고자 한다면, 몇 가지 방법이 있습니다. 여기에 몇 가지 방법을 안내해드리겠습니다:

1. `.zshrc` 파일에 별도의 스크립트를 추가: `.zshrc` 파일에 `.zprofile` 파일을 실행하는 스크립트를 추가할 수 있습니다. 이렇게 하면 `.zshrc` 파일이 실행될 때 `.zprofile` 파일도 함께 실행되어 설정이 적용됩니다. `.zshrc` 파일에 다음과 같은 내용을 추가해보세요:

if [ -f ~/.zprofile ]; then
       source ~/.zprofile
   fi


2. `.zshrc` 파일을 `.zlogin` 파일로 변경: `.zlogin` 파일은 로그인 시에 실행되는 파일이지만, 터미널을 재실행할 때도 실행됩니다. 따라서 `.zprofile` 파일에 추가한 환경 설정을 `.zlogin` 파일에 이동시키고, `.zshrc` 파일을 `.zlogin` 파일로 변경하여 설정을 적용할 수 있습니다. `.zshrc` 파일을 `.zlogin` 파일로 변경하려면 다음과 같이 이름을 변경해주세요:

mv ~/.zshrc ~/.zlogin


3. 직접 환경 변수 설정: `.zprofile` 파일에 추가한 환경 설정을 `.zshrc` 파일에 직접 추가할 수도 있습니다. 이렇게 하면 `.zshrc` 파일만으로 설정을 관리할 수 있습니다. `.zprofile` 파일에 추가한 설정을 `.zshrc` 파일로 복사하고, `.zprofile` 파일은 비워둡니다.

위의 방법 중 하나를 선택하여 `.zprofile` 파일에 추가한 환경 설정을 터미널을 종료하고 다시 실행했을 때도 적용시킬 수 있습니다. 선택한 방법에 따라 설정을 조정하시면 됩니다.


Q9. 다른 방법은 없어?

A9. 

물론, 더 다른 방법도 있습니다. 다른 방법 중 하나는 `.zshrc` 파일을 편집하여 `.zprofile` 파일을 직접 실행하는 것입니다. 다음과 같은 내용을 `.zshrc` 파일에 추가해보세요:

if [[ -n "$ZSH_VERSION" ]]; then
    if [[ -e ~/.zprofile ]]; then
        source ~/.zprofile
    fi
fi

위의 코드는 `.zshrc` 파일이 실행될 때 `.zprofile` 파일이 있는 경우에만 실행하도록 조건문을 추가한 것입니다. 이렇게 하면 `.zshrc` 파일이 실행될 때 `.zprofile` 파일이 실행되어 설정이 적용됩니다.

이 방법을 사용하면 `.zshrc` 파일을 수정하여 `.zprofile` 파일을 실행시킬 수 있으므로, 터미널을 재실행하더라도 `.zprofile` 파일에 추가한 환경 설정이 적용됩니다.

다만, 주의해야 할 점은 `.zshrc` 파일에 `.zprofile` 파일을 실행하는 코드를 추가하면, `.zshrc` 파일이 실행될 때마다 `.zprofile` 파일도 실행되므로 중복된 설정이 발생할 수 있습니다. 따라서 `.zshrc` 파일과 `.zprofile` 파일에 중복되는 설정이 없도록 주의해야 합니다.

 


 

아니... 이렇게 코드로 건드리는 방법 말고 분명 다른 쉬운 방법이 있을 거라 생각했다.

zprofile은 로그인 시에 실행된다며, 그럼 로그인 세션이 발생하도록 하면 되는 거 아니야?

그래서 어떻게 해야 로그인이 다시 발생할지 찾아나가기 시작했다

 

Q10. zprofile은 로그인 시에 실행된다며, 그럼 로그인을 다시 해도 되지 않을까?

A10. 

`.zprofile` 파일은 로그인 시에 실행되는 파일입니다. 따라서 로그인을 다시 수행한다면 `.zprofile` 파일이 실행될 것입니다. 로그인을 다시 수행하는 방법은 로그아웃한 후 다시 로그인하는 것입니다.

로그아웃한 후에는 다시 로그인해야 하므로 현재 진행 중인 작업이 종료되고 세션이 초기화됩니다. 그리고 다시 로그인하면 새로운 세션이 시작되고 `.zprofile` 파일이 실행됩니다.

즉, 로그인을 다시 수행하면 `.zprofile` 파일에 추가한 환경 설정이 적용되고, 해당 설정이 유지됩니다. 다만, 이는 현재 세션을 종료하고 새로운 세션을 시작하는 것이므로 주의해야 합니다. 실행 중인 프로세스나 작업이 종료될 수 있으며, 현재까지의 작업이 손실될 수 있습니다.

따라서 `.zprofile` 파일의 변경 사항을 적용하려면 로그아웃한 후에 다시 로그인하는 것이 일반적인 방법입니다. 하지만 로그아웃 과정은 주의해서 수행해야 합니다.


Q11. 그럼 터미널에서 로그아웃하고 로그인하는 방법 알려줘

A11. 

터미널에서 로그아웃하고 다시 로그인하는 방법은 다음과 같습니다:

1. 현재 세션에서 로그아웃: 터미널 창에서 `exit` 또는 `logout` 명령을 입력하여 현재 세션을 종료합니다. 이렇게 하면 로그아웃되고 터미널 창이 닫힙니다.

2. 로그인 창으로 이동: 터미널 창이 닫힌 후, macOS의 상단 메뉴 바에서 "애플 아이콘"을 클릭한 다음 "로그아웃"을 선택합니다. 이렇게 하면 로그인 창이 표시됩니다.

3. 다시 로그인: 로그인 창에서 사용자 계정 정보를 입력하고 로그인합니다. 이렇게 하면 새로운 터미널 세션이 시작되고, `.zprofile` 파일에 추가한 환경 설정이 적용됩니다.

다시 한 번 강조하자면, 로그아웃하고 다시 로그인하는 과정은 현재 세션을 종료하고 새로운 세션을 시작하는 것이므로, 실행 중인 작업이나 프로세스가 종료될 수 있으며, 주의해야 합니다. 로그아웃하기 전에 현재까지의 작업을 저장하고 필요한 작업을 완료한 후에 로그아웃하는 것이 좋습니다.

 


여기서 또 다른 의문,

터미널에서 로그아웃 하는데 왜 자꾸 실행 중인 작업이 종료된다고 하는 걸까? 맥북이 종료 돼버리나?

사실 전에 리눅스 서버를 사용할 때 여러 계정에 로그인을 했는데, 서버상에서 작업하는 건 로컬(노트북)에서 작업하는 것처럼 인터넷 창이나 디렉토리가 시각적으로 보이는 게 아니기 때문에 로그아웃시 다 종료된다는 생각을 따로 하지 않았던 거 같다.

그런데 사실 리눅스 서버로 동시에 여러 계정을 접속하는 경우에 새로운 탭을 열어서 작업했고, 동일한 탭에서 계정을 스위치 하면 이전 계정에서 작업하던 내용은 사라졌다. 윈도우 노트북을 사용할 때도 노트북에 로그인할 때 게스트 모드는 따로 있다.

지금 생각해 보니 당연한 걸 내가 질문했네...? 그래도 질문을 주고받았으니 한번 정리해 보자...

 

Q12. 터미널에서 로그아웃 하면 맥북에서 로그아웃이 돼?

A12. 

예, 터미널에서 로그아웃하는 것은 맥북 전체에서 로그아웃하는 것과 동일한 동작을 수행합니다. 터미널은 맥북 운영 체제 내에서 실행되는 애플리케이션 중 하나입니다. 따라서 터미널에서 로그아웃하면 현재 사용자 계정에서 로그아웃되며, 맥북 전체에서 로그아웃됩니다.

로그아웃 과정은 현재 사용자 계정에서 실행 중인 모든 프로세스와 작업을 종료하고, 사용자 세션을 종료하는 것을 의미합니다. 따라서 로그아웃하기 전에 현재까지의 작업을 저장하고 필요한 작업을 완료하는 것이 중요합니다.

로그아웃한 후에는 맥북 로그인 화면이 나타나며, 다른 사용자로 로그인하거나 현재 사용자로 다시 로그인할 수 있습니다.


Q13. 예시 사례 보여줘

A13. 

확실하게 이해하기 위해 예시를 들어보겠습니다.

1. 현재 사용자 "UserA"로 로그인되어 있는 상태에서 터미널을 실행합니다.
2. 터미널에서 다음과 같이 입력하여 로그아웃합니다:

logout

3. 맥북은 현재 사용자 "UserA"가 로그아웃되었으며, 맥북 로그인 화면이 표시됩니다.
4. 이제 다른 사용자 계정으로 로그인할 수 있습니다. 예를 들어 "UserB"로 로그인합니다.
5. 로그인 후, 터미널을 실행하면 새로운 터미널 세션이 시작됩니다.
6. 이때, `.zprofile` 파일에 추가한 환경 설정이 새로운 터미널 세션에 적용됩니다.

위의 예시에서 터미널에서 로그아웃하면 맥북 전체에서 로그아웃되어 다른 사용자로 로그인해야 합니다. 새로운 사용자로 로그인한 후 터미널을 실행하면, 해당 사용자의 환경 설정 파일이 실행되어 설정이 적용됩니다.

로그아웃은 현재 사용자 세션을 종료하는 것이기 때문에, 현재 사용자의 모든 프로세스와 작업이 종료됩니다. 따라서 주의하여 사용자를 변경하고 로그아웃하는 것이 중요합니다.

 


 

지금 생각해 보니 너무나 당연한 이야기로 쓸데없이 질문했다가 다시 본론으로 돌아가 그럼 대체 언제 로그인이 발생하는 건지 물어봤다. 그리고 자꾸 로그아웃 하면 모든 작업이 종료돼서 주의해야 한다고 겁을 줘서 로그아웃 하는 거 말고 다른 방법을 찾아보려고 했다.

 

Q14. 맥북을 로그아웃 하지 않고 restart 하거나 sleep mode로 변경했다가 다시 시작하면 zprofile이 읽힐까?

A14. 

맥북을 재시작하거나 슬립 모드로 변경한 후에는 로그아웃하지 않았기 때문에 새로운 로그인 세션이 시작되지 않습니다. 따라서 `.zprofile` 파일은 읽히지 않습니다.

맥북을 재시작하거나 슬립 모드로 변경한 후에는 현재 사용자의 세션이 유지되며, 터미널도 그대로 유지됩니다. 이는 로그아웃하지 않은 상태에서의 계속된 세션입니다. 따라서 `.zprofile` 파일에 추가한 환경 설정이 적용되지 않습니다.

만약 `.zprofile` 파일에 추가한 환경 설정을 적용하려면, 로그아웃한 후에 다시 로그인해야 합니다. 로그아웃한 후에는 새로운 로그인 세션이 시작되고, `.zprofile` 파일에 추가한 설정이 적용됩니다. 재시작하거나 슬립 모드에서 깨어나면 로그인 세션이 유지되기 때문에 `.zprofile` 파일이 다시 실행되지 않습니다.


Q15. 그럼 맥북을 shut down 했다가 재실행하면?

A15. 

맥북을 완전히 종료(shut down)한 후 다시 시작하면, 새로운 로그인 세션이 시작되며 `.zprofile` 파일이 실행됩니다. 완전한 종료 후 재시작하면 이전 세션은 모두 종료되기 때문에 로그인 과정이 필요하며, 이에 따라 `.zprofile` 파일도 실행됩니다.

맥북을 완전히 종료하면 현재 세션과 관련된 모든 프로세스와 작업이 종료됩니다. 이는 로그아웃과는 달리 사용자 세션을 완전히 종료하는 것을 의미합니다. 따라서 맥북을 종료한 후 다시 시작하면 로그인이 필요하며, 로그인 과정에서 `.zprofile` 파일이 실행되어 설정이 적용됩니다.

따라서 맥북을 완전히 종료한 후 다시 시작하면 `.zprofile` 파일에 추가한 환경 설정이 적용되며, 해당 설정이 유지됩니다.


Q16. sleep 하거나 restart 할 때도 비밀번호를 다시 입력하잖아. 근데 왜 이때는 로그인 세션이 시작되지 않아?

A16. 

맥북에서 슬립 모드로 들어가거나 재시작하는 경우, 비밀번호를 다시 입력하는 것은 맥북의 보안 기능 중 하나입니다. 이 과정은 현재 사용자의 인증을 요구하는 것으로, 로그인 세션이 시작되는 것은 아닙니다.

슬립 모드로 진입하거나 재시작하는 경우, 맥북은 현재 사용자의 세션을 일시적으로 중단하고, 화면이 꺼지거나 다시 시작됩니다. 이때 비밀번호를 입력하는 것은 맥북의 보안을 유지하기 위해 사용자 인증을 다시 요청하는 것입니다. 이는 현재 사용자의 세션을 유지하면서 맥북을 잠금 상태로 유지하거나 다시 시작하는 것입니다.

슬립 모드로 진입하거나 재시작한 후에는 이전 사용자 세션을 계속 사용합니다. 따라서 로그인 세션이 새로 시작되지 않으며, `.zprofile` 파일도 실행되지 않습니다. 로그인 세션을 시작하려면 비밀번호를 입력하여 사용자 인증을 수행해야 합니다.

이러한 보안 절차는 맥북이나 다른 운영 체제에서 일반적으로 사용되는 방식으로, 사용자의 개인 정보와 데이터를 보호하기 위해 중요한 역할을 합니다.

 


정리

  • zprofile은 로그인 시 일회성으로 읽히는 파일이다
    • 이때 로그인의 개념은 정말 노트북을 껐다가 켰을때 노트북에 다시 로그인하는 정도이다
    • 재시동이나 절전모드의 경우 단순히 보안을 위해 비밀번호를 입력할 뿐, 로그인 세션이 다시 발생하지는 않는다
    • 즉, zprofile에 환경 변수를 설정하고 적용하기 위해서는 노트북을 완전히 종료했다가 다시 시작해야 한다.
  • zshrc는 새로운 터미널 세션이나 새로운 셸이 시작될 때마다 읽히는 파일이다
    • 노트북 전원을 켜고 로그인된 이후 종료 전까지 여는 터미널에서는 매번 zshrc만 읽힌다
    • 터미널을 닫았다가 다시 열 때, 새로운 터미널 탭을 열 때 등

 

결론

속 편하게 zshrc에 환경 변수를 추가하는 걸로 하자! 개발을 하다 보면 사실 노트북을 자주 끄지 않기 때문에 zprofile 파일을 읽기 위해 노트북을 완전히 종료했다가 다시 키는 건 불필요하게 소모적이다. "source ~/.zprofile"로 즉시 로딩하여 환경 설정 값을 적용하는 방법도 있지만 찾아보니 터미널을 재실행하면 환경설정이 계속 초기화되는 케이스들이 많은 것 같다.

그러니 터미널 세션이 시작될 때마다 읽히는 zshrc 파일에 환경변수를 추가해서 터미널만 껐다 켜면 항상 적용될 수 있도록 하자! 

 

 

 

반응형

댓글