티스토리 뷰

리눅스 시스템 환경 변수 구조 이해

자신만의 리눅스 환경을 만들기 위해서는 리눅스 시스템 환경 변수 구조에 대한 이해가 필요하다.
특히 Alias를 정의한다거나 , 환경 또는 패스를 사전에 정의하기 위해서는 더욱 그렇다.
필자는 Alias를 추가하기 위해 들여다 보다가 몇가지 흥미로운 점들을 발견하였고, 이에 대해 정리하고저 한다.

우선 아래와 같은 구조를 이해하면, 환경 변수를 세팅하는 데 매우 편리하다.


몇가지 테스팅을 해 보니 구조는 위의 그림과 같다는 데 결론에 도달하였다.
또한 각각의 구성 파일에 접근해 보면, 어떤 경우에 사용하라는 것인지에 대해 주석처리와 함께 상세히 소개 되고 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# /etc/profile
 
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
 
# /etc/profile은 실제 들여다 보면 위와 같이 소개가 된다. 시스템 전역에 걸친 환경을 정의하며, 시작시 /etc/profile.d 하위에 존재하는 shell들이 함께 실행 된다.
 
[root@web whchoi]# ls /etc/profile.d/
256term.csh    colorgrep.sh  csh.local  less.csh  which2.csh
256term.sh     colorls.csh   lang.csh   less.sh   which2.sh
colorgrep.csh  colorls.sh    lang.sh    sh.local
 
# 시스템 부팅과 동시에 로딩되는 Shell들이며,사용자 전체가 공통으로 할당 받는 환경이 된다.
 
# /etc/bashrc
 
# System wide functions and aliases
# Environment stuff goes in /etc/profile
 
# /etc/bashrc는 파일을 열어 보면, 시스템 전반에 걸친 함수와 alias를 선언하도록 되어 있다.
# 또한 /etc/profile을 그대로 참조하여 사용하도록 되어 있는 하위 개념이다.
 
[root@web whchoi]# more ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
# Get the aliases and functions
 
# 실제 사용자별 shell profile과 shellrc를 들여다 보면 더욱 더 분명해 진다.
# bash_profile은 사용자 환경에 맞게 로그인 이후에 로딩되어 할당 받는 환경이다.
 
[root@web whchoi]# more ~/.bashrc
# .bashrc
 
# User specific aliases and functions
 
# 사용자 홈디렉토리에 위치한 .bashrc는 로그인 하거나, 현재 터미널에서 다시 .bashrc를 로딩하면 즉각 환경이 반영된다.
# bash_profile 과 bashrc는 유사하지만 실행하는 데 있어서 다소 차이가 존재한다.
cs

ntp 동기화를 위해 해당 시간대의 NTP Pool zone을 확인한다.
www.ntppool.org 에서 확인 할 수 있다.

그렇다면 만약 alias를 사용자 별로 다르게 선언한다면 어디가 가장 좋을까?
정답은 따로 없지만, ~/.bashrc 에 위치하는 것이 가장 좋다.
또한 모든 사용자에게 alias를 공통적으로 내려 준다면 어디가 가장 좋을까?
이것은 되도록이면 /etc/bashrc 에 위치하는 것이, 가장 좋다는 것을 쉽게 알 수 있다.

아래 나의 시스템에 적용한 /etc/bashrc를 보자.
몇개의 alias와 환경변수를 넣은 예제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# /etc/bashrc
 
# System wide functions and aliases
# Environment stuff goes in /etc/profile
 
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
 
# are we an interactive shell?
alias nmclidev='nmcli dev sh -a | awk '/IP4/''
alias yumu='yum update'
alias yumi='yum -y install'
alias lsa='ls -al'
alias fwlist='firewall-cmd --list-all'
HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '
export HISTTIMEFORMAT
 
이하 생략
cs






'운영체제 > Linux 일반' 카테고리의 다른 글

Apache vs Nginx  (4) 2019.03.27
공지사항