[Linux] 환경변수 설정(Login Shell과 .bash 파일)

주형(Jureamer)·2022년 6월 11일
0

개요


얼마 전 EC2에서 테스트, 운영 환경에 대한 분기를 위해 .bashrc 파일에 환경변수(NODE_ENV) 를 저장해뒀는데, 자동배포가 될 때마다 환경변수가 초기화되어(띠용!?) 매 번 환경변수를 다시 저장해뒀던 삽질이 생각납니다.. 햄보칼수가 업써!!!

그리고 행복을 위해.. 정확한 방법을 찾기 위해 구글로 여정을 떠나 .bash계열의 파일들과 Login shell에 대해 공부가 필요하다는 사실을 깨닫게 되었습니다.

Shell의 종류에 따라 읽어들이는 파일도 다르고, 전역변수인지 지역변수인지에 따라서 디렉토리도 다르기 때문에 이를 잘 이해하고 적용해야할 듯 합니다.

Login Shell과 Non-Login Shell


Login Shell

말 그대로 계정과 암호를 입력해서 Shell을 실행하는 것을 말합니다.
따라서 ssh로 접속하거나 로컬에서 GUI를 통해 Shell을 실행하는 것은 Login Shell입니다.
'.profile', '.bash_profile' 이 두 파일은 Login할 때 로드되는 파일입니다.

.bash_profile은 꼭 bash로 로그인 할 때만 실행되며, .profile은 로그인 시 무조건 실행됩니다.


Non-Login Shell

로그인 없이 실행하는 Shell로, ssh로 접속하고 나서 다시 bash 실행하는 경우나, GUI 세션에서 터미널을 띄우는 것도 여기 해당합니다.

ex) sudo bash, su

  • 단, Mac OS X에서는 로그인 여부에 관계 없이 모든 터미널 창을 Login Shell로 실행한다하니 참고하시기 바랍니다.

이미 이해하신 분들도 계시겠지만 위의 내용에 따르면 보통 Non-Login ShellLogin Shell을 거쳐가게 되어있습니다.

이 부분을 이해하시면 많은 도움이 될 것 같습니다.

저는 이것을 보고나서 왜 .bashrc에 작성해둔 변수가 자동배포 시에 적용안되는 지 깨닫게 되었습니다..!

`

.bashrc / .bash_profile / .profile


.bashrc

  • 이미 로그인 한 상태에서 새 터미널 창을 열 때마다, 즉 Non-Login Shell에서 실행됩니다.
  • /etc/bashrc는 시스템 전역(모든 사용자)에 대한 환경설정을 담당합니다.
  • ~/.bashrc는 특정 사용자에 대한 환경설정을 담당합니다.

.bash_profile

  • 시스템에서 로그인 할 때마다, 즉 Login Shell에서 실행됩니다.
  • 해당 유저에게만 적용되는 파일로, 위치는 해당 유저의 홈 디렉토리(~/)에 위치합니다.

.profile

  • 로그인 할 때마다 실행됩니다. PATH와 같이 로그인할 때 실행해야하는 것 중 bash와 관계 없는 것들을 작성합니다.

사용자 환경 변수 설정


1 .불러올 환경(Login Shell or Non-Login Shell)을 고려하여
2. 해당 파일 하단에 export [변수명]=[환경변수값]을 추가한 뒤
3. source [파일 이름]으로 적용시켜주면 됩니다.


참고



profile
작게라도 꾸준히 성장하는게 목표입니다.

1개의 댓글

comment-user-thumbnail
2023년 11월 21일

감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다감사합니다

분명 bashrc에 있는데 왜 안되나 계속 보고있었어요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

답글 달기