리눅스에서 .bash_profile
은 사용자 환경을 설정하는 데 중요한 역할을 하는 파일이다. 로그인 shell을 사용할 때 실행되는 스크립트로, 사용자가 시스템을 자신의 필요에 맞게 커스터마이즈할 수 있도록 돕는다. .bash_profile
에 설정된 변수나 경로는 오직 해당 계정에만 적용되며, 다른 계정에는 영향을 미치지 않는다. 쉽게 말해, 특정 Linux 계정에서 자주 사용하는 변수가나 명령어들을 미리 설정해두고, 사용자가 로그인할 때 자동으로 환경을 구성해주는 역할을 한다.
파일의 위치
.bash_profile
은 사용자의 홈 디렉토리에 위치한다. 기본적으로 숨김 파일로 간주되어, 파일 이름 앞에 점(.)이 붙는다. 이 파일은 ls
명령어로는 보이지 않기 때문에, 숨김 파일을 확인하려면 ls -al
과 같이 -a
옵션을 사용해야 한다.
사용 목적
.bash_profile
은 리눅스에서 로그인 shell 환경을 설정하는 데 중요한 역할을 한다. 주로 다음과 같은 용도로 사용된다.
- 환경변수 설정:
PATH
와 같은 환경 변수를 설정하여 프로그램이 저장된 디렉토리를 시스템이 인식하도록 한다. - 시작 프로그램 실행: 로그인 시 자동으로 실행할 프로그램이나 스크립트를 지정할 수 있다.
- shell 옵션 설정: Bash의 동작 방식을 변경하는 다양한 옵션을 설정할 수 있다.
- alias 설정 : 자주 사용하는 명령어를 간단한 alias(별칭)으로 설정하여, 입력시간을 단축하고 편리하게 사용할 수 있다.
파일의 구조
.bash_profile
은 보통 다음과 같은 형식으로 작성된다. 주로 환경 변수 설정, 사용자 정의 프롬프트, 시작 시 실행할 프로그램 등을 포함한다. 예를 들어, Nginx를 관리하는 ngxadm
계정이 있다고 할 때, 아래와 같이 작성할 수 있다.
# Nginx 홈 디렉토리 설정 (기본 Nginx 디렉토리로 쉽게 이동)
export NGINX_HOME="/app/nginx"
export NGINX_LOG_DIR="/var/log/nginx"
# 사용자 정의 프롬프트 설정
PS1="\\u@\\h \\w$ "
# 시작 시 실행할 프로그램
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# 자주 사용하는 명령어에 대한 alias 설정
alias ngxstatus='systemctl status nginx'
alias ngxreload='systemctl reload nginx'
alias ngxrestart='systemctl restart nginx'
alias ngxlog='tail -f /var/log/nginx/access.log'
alias ngxhome='cd $NGINX_HOME'
alias ngxconf='vi $NGINX_HOME/nginx.conf'
- 환경 변수 설정 :
export
를 사용하여 시스템의 환경 변수를 설정한다. - 사용자 정의 프롬프트 :
PS1
변수로 로그인 후 보여지는 프롬프트를 설정할 수 있다. - 시작 시 실행할 프로그램 :
~/.bashrc
파일을 포함시켜 로그인 시,.bashrc
의 설정도 자동으로 적용되도록 할 수 있다. - alias 설정 : 자주 사용하는 명령어를 간단한 이름으로 설정할 수 있다. 예를 들어,
ngxadm
으로서, nginx 관련 명령들에 대한 alias를 설정하여 명령어를 더 짧고 간편하게 실행할 수 있다.
실행 방법
파일을 수정한 후, 변경 사항을 적용하려면 새로운 터미널 세션을 시작하거나, 다음 명령어를 사용하여 .bash_profile
설정을 로드할 수 있다.
source ~/.bash_profile
.bash_profile 과 .bashrc
.bash_profile
과 .bashrc
는 모두 Bash Shell의 환경을 설정하는 데 사용되는 파일이지만, 용도와 실행되는 시점이 다르다. 이 둘의 차이를 이해하기 위해서는 Login Shell과 Non-Login Shell에 대해 먼저 이해해야 한다.
Login Shell과 Non-Login Shell
- Login Shell은 사용자가 ID와 비밀번호를 입력하여 시스템에 로그인한 후 실행되는 shell을 말한다. 예를 들어, SSH로 원격 접속하거나, 로컬에서 GUI 로그인 후 터미널을 처음 실행할 때가 이에 해당한다.
- Non-Login Shell은 이미 로그인된 상태에서 새 터미널 창을 열 때 실행되는 shell이다. 예를 들어, GUI 환경에서 터미널 창을 열거나, 로그인 후 새로운 터미널 세션을 시작할 때 시행된다.
.bash_profile
.bash_profile
은 Login Shell에서만 실행되며, 사용자가 시스템에 로그인할 때만 로드된다.- 이 파일은 사용자의 로그인 과정에서 한 번만 실행되며, 주로 시스템에 로그인할 때 필요한 환경 변수 설정이나 시작 프로그램 실행 등을 포함한다.
- 즉, 주로 로그인 환경을 설정하는 데 사용된다.
.bashrc
.bashrc
는 Non-Login Shell에서 실행되며, 이미 로그인한 상태에서 새로운 터미널 창을 열 때마다 실행된다.- 이 파일은 주로 터미널 환경의 사용자 맞출 설정을 포함하며, 로그인 후 shell 세션에서 반복적으로 필요한 설정을 넣는 파일이다.
- 즉, 주로 터미널 환경 설정에 사용된다.
Reference