70. Manage System Wide Environment Profiles
환경 변수 이해
환경 변수는 셸에 저장된 동적 값으로, 실행 중인 프로세스의 동작에 영향을 줄 수 있습니다. 예를 들어 HISTSIZE는 Bash가 기억하는 최대 명령어 수를 제어합니다.
현재 사용자의 환경 변수 표시:
$ printenv # 동일: $ env
PATH=/home/aaron/.local/bin:/home/aaron/bin:/usr/local/bin
HISTSIZE=1000
HOME=/home/aaron
명령줄에서 환경 변수 사용
변수 앞에 달러 기호($)를 붙이면 "셸이 현재 값으로 대체"합니다:
$ echo $HOME
/home/aaron
스크립트에서 환경 변수 동적 활용
환경 변수를 사용하면 스크립트가 실행 사용자에게 맞게 조정됩니다:
$ touch $HOME/saved_file # 동일: $ touch /home/aaron/saved_file
Aaron이 스크립트를 실행하면 /home/aaron/saved_file이 생성되고, Jane이 실행하면 /home/jane/saved_file이 생성됩니다.
환경 변수 설정
개인 환경 변수 설정 → .bashrc 파일 수정
시스템 전체(모든 사용자) 변경 → /etc/environment 편집:
$ sudo vim /etc/environment
/etc/environment에 대한 변경은 다음 로그인 시 모든 사용자에게 적용됩니다.사용자 로그인 시 명령어 실행
복잡한 명령어를 로그인 시 실행하려면 /etc/profile.d 디렉토리를 사용합니다. 이 디렉토리의 파일들은 로그인 셸이 자동으로 실행합니다.
각 사용자의 로그인 날짜와 시간을 로깅하는 스크립트 생성 예시:
$ sudo vim /etc/profile.d/lastlogin.sh
파일 내용:
echo "Your last login was: " > $HOME/lastlogin
date >> $HOME/lastlogin
로그아웃 후 재로그인하면 ~/lastlogin 파일에 로그인 시간이 기록됩니다:
$ cat lastlogin
Your last login was at:
Thursday DEC 16 11:19:27 CDT 2021
정리
/etc/environment와 /etc/profile.d를 통한 시스템 전체 환경 프로파일 관리로 모든 사용자의 셸과 애플리케이션 동작을 효과적으로 설정하고 커스터마이징할 수 있습니다.