[시스템 환경 설정] Mac OS 환경변수 등록 방법

yeonsu·2023년 3월 22일
2

시스템 환경 설정

목록 보기
1/1

💡 환경변수

📌 환경변수

  • 환경변수 : 프로그램의 동작에 영향을 미치는 값(환경설정)
  • 환경변수를 사용하는 이유 : 환경에 따라 프로그램의 동작에 영향을 미치는 값들을 설정하기위해서
  • 지역환경변수 : 환경변수를 생성한 특정 사용자만 사용가능
  • 전역환경변수 : 모든 사용자가 사용가능
  • 환경변수는 echo $환경변수이름을 통해 값을 확인할 수 있다

📌 환경변수 임시적용 방법

  • 지역환경변수 : 등호표시앞뒤에는 공백이 없어야하며, 저장하고자 하는 변수에 공백존재시 값 전체를 따옴표로 감싸준다
  • 전역환경변수 : export명령어를 사용한다

📌 환경변수 영구적용 방법

  • 지역환경변수 : .zshrc 파일이나 .bashrc 파일의 내용에 설정하고자 하는 환경변수를 작성하고 저장한다
  • 전역환경변수 : 루트 디렉토리의 etc디렉토리 내에 있는 profile이라는 파일의 내용에 설정하고자하는 환경변수를 작성하고 저장한다

💡 Mac OS 환경변수 등록 방법

  1. echo $SHELL
    → 가장 먼저 Mac OS의 기본 셀을 확인해야하며, /bin/zsh가 나올 경우 Z shell, /bin/bash가 나올 경우 Bash shell이 기본 셀이다

  2. vi ~/.zshrc 또는 vi ~/.bashrc
    → Z shell의 경우 .zshrc파일을, Bash shell의 경우 .bashrc 파일을 vi편집기로 생성하거나 오픈한다

  3. i
    → vi 편집기에서 i를 눌러 insert 모드로 진입한다

  4. export 환경변수명=환경변수값
    → 등록하고자 하는 환경변수명과 환경변수값을 입력한다

  5. ESC 키
    → ESC 키를 눌러 insert모드를 종료한다

  6. :wq
    → vi 편집기를 저장 후 종료한다

  7. source ~/.zshrc 또는 source ~/.bashrc
    → Z shell의 경우 .zshrc파일을, Bash shell의 경우 .bashrc 파일을 source 명령어를 통해 환경 변수로 등록한다

  8. printenv 또는 echo $환경변수명
    → 환경변수가 잘 등록되었는지 확인한다
    printenv : 모든 환경 변수 확인
    echo $환경변수명 : 특정 환경 변수값 확인


💡 IntelliJ에 환경변수 등록 방법

JWT를 공부하던 중, JWT의 Secret Key를 Mac OS 시스템 환경변수 등록 방법으로 등록하였다
시스템 환경변수 자체는 잘 생성된 것 같은데, IntelliJ에서 application.yml에서 변수 사용이 되지 않았다

📌 오류 메시지

Error creating bean with name 'jwtTokenizer': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'JWT_SECRET_KEY' in value "${JWT_SECRET_KEY}"

📌 해결방법

IntelliJ 내에 환경변수를 직접 등록하여 사용하는 방법으로 해결할 수 있었다

상단바 [Run] > [Edit Configurations...] > [Modify options] > [Environment variables] 활성화

활성화 된 Environment variables에서 오른쪽 버튼을 눌러, 환경변수명과 환경변수값을 등록해주면 된다

📌 분석

터미널에서 printenvecho $환경변수명 를 통해 시스템 환경 변수가 잘 생성되었음을 확인하였지만,
IntelliJ의 [Environment Variables] > [system environment variables]에 등록한 변수가 보이지 않는 것을 보니,
IntelliJ가 시스템 환경변수를 읽어오지 못하는 것 같다

Mac OS 시스템 환경 변수를 가져와서 사용하는 것은 아니긴 하지만, application.yml에 직접 Secret key를 작성한 것보다는 보안상 더 바람직할 것으로 생각된다

profile
Hello :)

0개의 댓글

관련 채용 정보