리눅스/Debian or Ubuntu

데비안(Debian) 11 bullseye 설치 - 홈 디렉터리 내 하위 디렉터리명 한글에서 영문으로 변경, $PATH 추가

씨실과 날실 2021. 8. 26. 09:00

 

안녕하세요. 씨실과 날실입니다.

지난 시간에는 일반 사용자에게 관리자 권한(sudo 권한)을 부여하는 방법과 저장소(Repository)를 한국 사용자에게 맞게 설정하는 방법에 대해 알아보았습니다.

 

이번에는 홈 디렉터리(/home/계정명/) 안의 하위 디렉터리 이름들의 언어를 (한글에서 영어로, 다시 영어에서 한글로) 바꾸는 방법과 환경변수 $PATH 추가 설정하는 방법에 대해 알아보도록 하겠습니다.

 

홈 디렉터리 내 하위 디렉터리명 언어 변경

 

제 데비안 11 bullseye 설치 연재를 그대로 따라오신 분들은 시스템 운영 언어가 한글로 설정되어 있을 것입니다.

시스템 운영에 있어서 다른 것은 몰라도 디렉터리명만큼은 한글이 아닌 영어로 되어 있는 것이 생산성 측면애서 유리합니다.

리눅스 초보자 입장에서는 어떤 작업 과정을 확인할 때 한글로 표시되는 것이  이해하기 쉬울 것입니다.

그러나 실제로 리눅스를 관리하는 측면에서는 시스템 언어를 한글로 유지하는 것이 그다지 좋은 선택은 아닙니다.

만약 시스템 유지 보수 중 어떤 오류가 발생했을 때 문제 해결을 위해서 인터넷 검색을 하기 마련인데 해결책을 찾기 위해서는 영문으로 표시되는 메시지들을 그대로 복사해 검색하는 것이 보다 빠르고 정확하게 해결책을 찾을 수 있기 때문입니다.

 

시스템 언어와 입력소스(입력기)는 별개이기 때문에 시스템 언어가 영어로 설정되어 있더라도 한글 입력기만 제대로 설정되어 있다면 입력 시 영어 뿐만 아니라 한글도 정상적으로 입력할 수 있습니다.

 

기본 생성 하위 디렉터리명을 한글에서 영어로 변경

study@debian:~$

리눅스 OS 시스템을 부팅 해 일반 사용자 계정으로 로그인했을 때 처음 터미널 실행 시 나타나는 PS1 프롬프트 모습은 일반적으로 위와 같습니다.

물결표시(~)는 리눅스에서 해당 로그인 계정의 홈 디렉터리를 의미합니다.

 

study@debian:~$ pwd
/home/study
study@debian:~$

pwd 명령을 실행하면 현재 작업 디렉터리의 정확한 위치(절대 경로)를 확인할 수 있습니다.

홈 디렉터리는 일반적으로 '/home/계정명'으로 설정됩니다.

 

study@debian:~$ ls -F
공개/  다운로드/  문서/  바탕화면/  비디오/  사진/  서식/  음악/
study@debian:~$ ls -lF
합계 32
drwxr-xr-x 2 study study 4096  8월 16 11:55 공개/
drwxr-xr-x 2 study study 4096  8월 16 11:55 다운로드/
drwxr-xr-x 2 study study 4096  8월 16 11:55 문서/
drwxr-xr-x 2 study study 4096  8월 16 11:55 바탕화면/
drwxr-xr-x 2 study study 4096  8월 16 11:55 비디오/
drwxr-xr-x 2 study study 4096  8월 16 11:55 사진/
drwxr-xr-x 2 study study 4096  8월 16 11:55 서식/
drwxr-xr-x 2 study study 4096  8월 16 11:55 음악/
study@debian:~$

ls 명령으로 홈 디렉터리 안의 내용물(파일 및 취상위 하위 디렉터리)을 확인할 수 있습니다.

위와 같이 자동으로 생성되는 홈 디렉터리 내 기본 하위 디렉터리들의 이름이 한글로 지정되어 있는 것을 확인할 수 있습니다.

 

study@debian:~$ cat ~/.config/user-dirs.locale
ko_KRstudy@debian:~$

홈 디렉터리 내 자동 생성 하위 디렉터리들이 한글로 생성된 이유는 데비안 설치 시  ~/.config/user-dirs.locale 파일 안 언어 설정이 위에서 보듯 ko_KR로 설정되어 있기 떄문입니다.

 

study@debian:~$ export LANG=C; xdg-user-dirs-gtk-update

쉘빌트인(Shell Builtin) 명령어 export를 이용해 자식 프로세스에 언어 변수를 C로 변경하여 전역변수로 전달합니다.

그리고 바로 이어서  xdg-user-dirs-gtk-update를 실행해줍니다.

리눅스에서 명령 연속 실행 기호

;(세미콜론) : 주어진 하나의 라인 안에서 앞 명령의 성공 여부와 상관 없이 차례대로 뒷 명령을 실행

&&(더블 엠퍼샌드) : 주어진 하나의 라인 안에서 차례대로 실행하되, 앞 명령이 실패했을 경우 뒷 명령들은 미실행

||(더블 버티컬바) : 주어진 하나의 라인 안에서 차례대로 실행하되, 앞 명령이 성공하면  뒷명령들은 미실행

 

참고

& : 해당 명령을 백그라운드로 실행

| : 앞명령의 실행값을 토대로 뒷 명령을 실행

위 명령을 실행하면아래와 같은 창이 뜹니다.

각 디렉터리별 변경 디렉터리명이 표시됩니다.

이때 꼭 잊지말고 Don't ask me this again 항목을 체크해주시기 바랍니다.

체크해주시고 Update Names 버튼을 눌러주시면 아래와 같이 진행됩니다.

 

study@debian:~$ export LANG=C; xdg-user-dirs-gtk-update
Moving DESKTOP directory from 바탕화면 to Desktop
Moving DOWNLOAD directory from 다운로드 to Downloads
Moving TEMPLATES directory from 서식 to Templates
Moving PUBLICSHARE directory from 공개 to Public
Moving DOCUMENTS directory from 문서 to Documents
Moving MUSIC directory from 음악 to Music
Moving PICTURES directory from 사진 to Pictures
Moving VIDEOS directory from 비디오 to Videos
study@debian:~$

위와 같이 기본 생성 하위 디렉터리들으 이름이 한글에서 영어로 바뀌엇ㅅ음을 알려줍니다.

 

study@debian:~$ cat -n ~/.config/user-dirs.locale
cat: /home/study/.config/user-dirs.locale: No such file or directory
study@debian:~$

그런데 기존에 있던 ~/.config/user-dirs.locale 파일을 다시 읽어보려고 시도해보면 해당 디렉터리 또는  파일이 없다고 출력됩니다.

 

study@debian:~$ cat -n ~/.config/user-dirs.dirs  
     1	# This file is written by xdg-user-dirs-update
     2	# If you want to change or add directories, just edit the line you're
     3	# interested in. All local changes will be retained on the next run.
     4	# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
     5	# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
     6	# absolute path. No other format is supported.
     7	# 
     8	XDG_DESKTOP_DIR="$HOME/Desktop"
     9	XDG_DOWNLOAD_DIR="$HOME/Downloads"
    10	XDG_TEMPLATES_DIR="$HOME/Templates"
    11	XDG_PUBLICSHARE_DIR="$HOME/Public"
    12	XDG_DOCUMENTS_DIR="$HOME/Documents"
    13	XDG_MUSIC_DIR="$HOME/Music"
    14	XDG_PICTURES_DIR="$HOME/Pictures"
    15	XDG_VIDEOS_DIR="$HOME/Videos"
study@debian:~$

적용되는 디렉터리명은 ~/.config/user-dirs.dirs 파일의 내용을 참조합니다.

 

study@debian:~$ ls -F
Desktop/    Downloads/  Pictures/  Templates/
Documents/  Music/      Public/    Videos/
study@debian:~$ ls -lF
total 32
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Desktop/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Documents/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Downloads/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Music/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Pictures/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Public/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Templates/
drwxr-xr-x 2 study study 4096 Aug 22 12:03 Videos/
study@debian:~$

ls 명령을 이용해 바뀐 디렉터리명을 직접 확인할 수 있습니다.

 

study@debian:~$ sudo apt update
[sudo] password for study: 
Hit:1 https://mirror.kakao.com/debian bullseye InRelease
Hit:2 https://mirror.kakao.com/debian bullseye-updates InRelease
Hit:3 https://ftp.kaist.ac.kr/debian-security bullseye-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
study@debian:~$

이때 터미널 명령을 실행하면 한글로 표시되던 진행과정이 위와 같이 영어로 표시되는데 그 이유는 아까 수행했던 export LANG=C 명령이 계속 영향을 끼치기 때문입니다.

 

study@debian:~$ sudo apt update
[sudo] study의 암호: 
기존:1 https://mirror.kakao.com/debian bullseye InRelease
기존:2 https://mirror.kakao.com/debian bullseye-updates InRelease              
기존:3 https://ftp.kaist.ac.kr/debian-security bullseye-security InRelease     
패키지 목록을 읽는 중입니다... 완료                                            
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
All packages are up to date.
study@debian:~$

이것은 시스템을 재부팅하면 다시 위와 같이 원상복귀됩니다.

 

기본 생성 하위 디렉터리명을 영어에서 한글로 변경

아까 디렉터리명을 한글에서 영어로 바꾸면서 자동으로 ~/.config/user-dirs.locale 파일이 제거되었습니다.

study@debian:~$ echo "C" > ~/.config/user-dirs.locale
study@debian:~$ export LANG=ko_KR.utf8; xdg-user-dirs-gtk-update

위와 같이 ~/.config/user-dirs.locale 파일을 생성하고, 언어 변수를 이후 자식 프로세스의 언어 변수를 ko_KR.utf8로 재정의해준 다음 xdg-user-dirs-gtk-update를 실행해줍니다.

 

그럼 위 창이 뜹니다.

다시 묻지 않기 항목에 체크해주고 이름 바꾸기 버튼을 눌러줍니다.

 

study@debian:~$ export LANG=ko_KR.utf8; xdg-user-dirs-gtk-update
Moving DESKTOP directory from Desktop to 바탕화면
Moving DOWNLOAD directory from Downloads to 다운로드
Moving TEMPLATES directory from Templates to 서식
Moving PUBLICSHARE directory from Public to 공개
Moving DOCUMENTS directory from Documents to 문서
Moving MUSIC directory from Music to 음악
Moving PICTURES directory from Pictures to 사진
Moving VIDEOS directory from Videos to 비디오
study@debian:~$

그럼 위와 같이 진행됩니다.

 

study@debian:~$ cat -n ~/.config/user-dirs.dirs
     1	# This file is written by xdg-user-dirs-update
     2	# If you want to change or add directories, just edit the line you're
     3	# interested in. All local changes will be retained on the next run.
     4	# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
     5	# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
     6	# absolute path. No other format is supported.
     7	# 
     8	XDG_DESKTOP_DIR="$HOME/바탕화면"
     9	XDG_DOWNLOAD_DIR="$HOME/다운로드"
    10	XDG_TEMPLATES_DIR="$HOME/서식"
    11	XDG_PUBLICSHARE_DIR="$HOME/공개"
    12	XDG_DOCUMENTS_DIR="$HOME/문서"
    13	XDG_MUSIC_DIR="$HOME/음악"
    14	XDG_PICTURES_DIR="$HOME/사진"
    15	XDG_VIDEOS_DIR="$HOME/비디오"
study@debian:~$

~/.config/user-dirs.dirs 파일을 열어보면 위와 같이 바뀝니다.

 

study@debian:~$ ls -F
공개/  다운로드/  문서/  바탕화면/  비디오/  사진/  서식/  음악/
study@debian:~$ ls -lF
합계 32
drwxr-xr-x 2 study study 4096  8월 22 12:38 공개/
drwxr-xr-x 2 study study 4096  8월 22 12:38 다운로드/
drwxr-xr-x 2 study study 4096  8월 22 12:38 문서/
drwxr-xr-x 2 study study 4096  8월 22 12:38 바탕화면/
drwxr-xr-x 2 study study 4096  8월 22 12:38 비디오/
drwxr-xr-x 2 study study 4096  8월 22 12:38 사진/
drwxr-xr-x 2 study study 4096  8월 22 12:38 서식/
drwxr-xr-x 2 study study 4096  8월 22 12:38 음악/
study@debian:~$

ls 명령을 통해 디렉터리명이 다시 한글로 바뀐 것을 확인할 수 있습니다.


환경변수 $PATH 추가 설정

데비안 $PATH 기본값

study@debian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
study@debian:~$

데비안 일반 사용자 환경변수 $PATH 기본값은 위와 같습니다.

 

study@debian:~$ su -
암호:
root@debian:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@debian:~# exit
로그아웃
study@debian:~$

그리고 데비안 root 사용자 환경변수 $PATH 기본값은 위와 같습니다.

bin 디렉터리는 주로 일반 사용자들이 사용할 수 있는 실행 파일들이 모여 있는 디렉터리입니다.

sbin 디렉터리는 sudo 권한을 가진 시스템 관리자들이 사용하는 시스템 관리 관련 명령 파일들이 모여 있는 디렉터리입니다.

 리눅스 기본 디렉터리에 대한 보다 자세한 내용은 위 링크를 참고하시기 바랍니다. 

 

리눅스 profile 파일

리눅스 등 친유닉스 계열 OS에서 사용되는 profile 파일은 로그인쉘에서 (사용자가 로그인 이후) 적용되는 스크립트들을 모아놓은 것으로, 모든 사용자들에게 공통적으로 적용되는 /etc/profile과 각 사용자별로 적용되는  ~/.profile이 있습니다.

 

리눅스에서 $PATH 환경변수의 기본값을 설정하는 기본 파일은 일반적으로 이 profile 파일입니다.

profile 파일은 해당 내용이 적용될 환경에 따라  /etc/profile, ~/.profile , bash_profile 등으로 나누어 설정 가능합니다.

 

/etc/profile

study@debian:~$ cat -n /etc/profile
     1	# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
     2	# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
     3	
     4	if [ "$(id -u)" -eq 0 ]; then
     5	  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
     6	else
     7	  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
     8	fi
     9	export PATH
    10	

- 하략 - 

study@debian:~$

위 코드는 모든 사용자에게 공통적으로 적용되는 리눅스 일반 프로필 파일로 이 파일에는 $PATH 등 일반 환경변수를 설정합니다.

사실 이러한 코드들을 이해하기 위해서는 리눅스 커맨드라인 쉘 스크립트 구문을 이해할 수 있어야 하며 이들 내용은 프로그래밍 구문과 유사합니다.

초심자들에게 이러한 내용들까지 알 것을 요구하는 것은 지나친 감이 없지 않습니다.

이번 연재에서는 $PATH 관련 설정을 초심자분들이 이해할 수 있을만큼의 최소한의 내용만을 담아 설명하도록 하겠습니다.

위 예시에서 4번째 줄부터 9번째 줄까지가 사용자들이 이용할  $PATH를 설정한 코드들입니다.

 

if - then 형식으로 시작하여 fi로 끝나는 4~8째 구문은  쉘스크립트나 프로그래밍을 공부하게 된다면 연산자 등 기초를 뗀 후 실제 복잡한 명령을 구성할 때 가장 먼저 배우게 되는 구조적 명령의 기초 if  -  then구문의 확장형인 if - then - else 구문입니다.

 

bash쉘에서 if-then 구문에서 조건을 테스트하는 구문은 다음과 같습니다.

if [조건]
then
명령
fi

만약 조건에 부합하면 명령을 실행하라는 뜻입니다.

참고로 가독성을 위해 행이 떨어져 있는 if 조건문과 then을 'if [조건]; then'와 같이 붙여 쓸 수 있습니다.

 

그리고 /etc/profile 파일의 위 $PATH 관련 설정에 사용된 예시는 아래와 같이 유형화할 수 있습니다.

if [조건]; then
명령 1
else
명령 2
fi

이러한 유형의 조건 테스트 구문은 만약 조건에 부합하면 명령 1을 실행하고 부합하지 않으면 명령 2를 실행하라는 뜻입니다.

 

해당 구문의 유개념은 이해했으니 이제 구문에 사용된 조건과 명령의 의미를 이해해보도록 합시다.

 

[ "$(id -u)" -eq 0 ]

위가 바로 if - then 조건문의 조건입니다.

$(명령어)는 소괄호 안에 작성된 명령어의 실행값을 의미합니다.

위 예시에는 사용자와 그룹의 ID를 출력하는 명령어 id에 옵션 -u가 사용되었습니다.

 

위 명령어에 대한 도움말은 아래와 같이 실행하여 확인할 수 있습니다.

study@debian:~$ id --help | grep '\-u'
  -n, --name     print a name instead of a number, for -ugG
  -r, --real     print the real ID instead of the effective ID, with -ugG
  -u, --user     print only the effective user ID
study@debian:~$

 

grep 명령 인수에 '-u'가 아니라 '\-u'가 사용된 이유는 커맨드라인에서 - 기호는 정규표현식의 기호로 인식되므로 - 기호가 정규표현식으로써의 - 기호가 아니라 문자 그대로의 - 문자임을 알려주기 위해 이스케이츠 문자 \를 앞에 붙여준 것입니다.

 

study@debian:~$ id -u
1000
study@debian:~$

데비안 설치 작업 과정 중 생성한 첫 일반 사용자의 ID 번호를 확인하면 위와 같이 1000이 표시됩니다.

 

study@debian:~$ su -
암호:
root@debian:~# id -u
0
root@debian:~# exit
로그아웃
study@debian:~$

그리고 root 계정으,로 로그인하여 ID 번호를 확인하면 위와 같이 0이 출력됩니다.

이렇게 출력된 각 숫자는 등식 조건의 좌변이 됩니다.

 

n1 -eq n2

위는 쉘 스크립트에서 숫자 비교 조건 구문입니다.

-eq는 산술비교 연산자 중 하나로 등호(=)의 의미입니다.

쉘 스크립트에서  숫자 비교 조건 구문

n1 -eq n2 : n1이 n2와 같은가

n1 -ge n2 : n1이 n2보다 크거나 같은가

n1 -gt n2 : n1이 n2보다 큰가

n1 -le n2 : n1이 n2보다 작거나 같은가

n1 -lt n2 : n1이 n2보다 작은가

n1 -ne n2 : n1이 n2와같지 않은가

 

이상의 지식을 참고하여 아래 구문을 이해해봅시다.

     4	if [ "$(id -u)" -eq 0 ]; then
     5	  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
     6	else
     7	  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
     8	fi

사용자의 ID 번호가 0과 같다면 적용되는 PATH 환경변수는 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"이고, 사용자의 ID 번호가 0과 다르면 PATH 환경변수로 PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"가 적용됩니다.

이것을 좀더 쉽게 설명하면 ID 번호가 0인 root 계정은 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"가 적용되고 그외 계정들은 PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"가 적용된다는 의미입니다.

 

export PATH

위 구문은 앞에서 작성된 $PATH 환경변수를 자식 프로세스에 상속하여 적용하는 구문입니다.

자세한 내용은 이 연재글 맨 하단의 링크를 참고하시기 바랍니다.

 


이번에는 ~/.profile 파일에 대해 알아보도록 합시다.

study@debian:~$ ls -aF
./             .local/                           다운로드/
../            .profile                          문서/
.bash_history  .vboxclient-clipboard.pid         바탕화면/
.bash_logout   .vboxclient-display-svga-x11.pid  비디오/
.bashrc        .vboxclient-draganddrop.pid       사진/
.cache/        .vboxclient-seamless.pid          서식/
.config/       공개/                             음악/
study@debian:~$

일반 사용자 홈 디렉터리 안에서 ls 명령어에 -a 옵션을 사용하면 숨김파일을 포함하여 홈 디렉터리 안의 모든 내용물을 확인할 수 있습니다.

 

study@debian:~$ cat -n .profile
     1	# ~/.profile: executed by the command interpreter for login shells.
     2	# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
     3	# exists.
     4	# see /usr/share/doc/bash/examples/startup-files for examples.
     5	# the files are located in the bash-doc package.
     6	
     7	# the default umask is set in /etc/profile; for setting the umask
     8	# for ssh logins, install and configure the libpam-umask package.
     9	#umask 022
    10	

- 생략 -

    19	# set PATH so it includes user's private bin if it exists
    20	if [ -d "$HOME/bin" ] ; then
    21	    PATH="$HOME/bin:$PATH"
    22	fi
    23	
    24	# set PATH so it includes user's private bin if it exists
    25	if [ -d "$HOME/.local/bin" ] ; then
    26	    PATH="$HOME/.local/bin:$PATH"
    27	fi
study@debian:~$

위 코드는 ~/.profile 파일 안의 내용 중 해당 파일에 대한 기본 안내 주석과 $PATH 환경변수 설정 항목입니다.

 

-d 파일

조건에 사용된 위 구문은 지정된 파일이 존재하고 그 파일의 속성이 디렉터리인가 묻는 것입니다.

파일 존재 여부 및 속성 확인 구문

-d 파일 : 파일이 존재하고 그 파일이 디렉터리인가

-e 파일 :파일이 존재하는가

-f 파일 :파일이 존재하고 디렉터리가 아닌 파일인가

-r 파일 :파일이 존재하고 읽을 수 있는 것인가

-s 파일 :파일이 존재하고 내용이 존재한가(비어있지 않은가)

-w 파일 :파일이 존재하고 기록할 수 있는가

-x 파일 :파일이 존재하고 실행할 수 있는가

-O 파일 :파일이 존재하고 현재 사용자가 소유한 것인가

-G 파일 :파일이 존재하고 기본 그룹이 현재 사용자와 같은가

파일 1 -nt 파일 2 : 파일 1이 파일 2보다 새것인가

파일 1 -ot 파일 2 : 파일 1이 파일 2보다 오래된 것인가

 

study@debian:~$ echo $HOME
/home/study
study@debian:~$

일반 사용자 홈 디렉터리의 실제 전체 경로(절대경로)는 위와 같이 확인할 수 있습니다.

 

study@debian:~$ cp ~/.profile ~/.profile.bak
study@debian:~$

일반 사용자 프로필 파일(~/.profile) 편집 전에 백업합니다.

 

study@debian:~$ echo 'export PATH=$PATH:/home/study' >> ~/.profile
study@debian:~$

위 명령을 실행함으로써 /home/study 디렉터리를 $PATH 환경변수에 추가해줍니다.

위 명령을 우리말로 풀어쓰면 다음과 같습니다.

export PATH=$PATH:/home/study 구문을 ~/.profile 파일 마지막 줄의 다음줄에 추가합니다.

PATH=$PATH:/home/study는 기존 $PATH 경로에다가 /home/study 디렉터리를 맨 마지막 순위로 추가합니다.

 

study@debian:~$ tail ~/.profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
export PATH=$PATH:/home/study
study@debian:~$

tail 명령을 사용하면 인수로 지정한 파일의 맨 마지막 몇 줄의 내용을 확인할 수 있습니다.

기본값은 10행의 내용이 출력되고 '-n 숫자' 옵션을 덧붙이면 숫자만큼의  마지막 행 내용을 확인할 수 있습니다.

 

study@debian:~$ source ~/.profile
study@debian:~$

위 명령을 실행하여 해당 내용을 바로 적용해줍니다.

 

study@debian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/study
study@debian:~$

$PATH 값을 확인해봅시다. 맨 후순위로 /home/study가 추가된 것을 볼 수 있습니다.

 

그러나 이 내용은 해당 쉘 또는 자식 프로세스의 쉘에서만 적용됩니다.

새 터미널을 열면 이 내용은 적용되지 않습니다.

시스템을 재부팅해야만 수정한 내용이 온전히 적용됩니다.

 

 

알아야 할 것

제 글에서는 profile 파일에 $PATH 환경변수를 설정했습니다만 인터넷 검색을 해보면 bashrc 파일 등 다른 설정 파일에 $PATH 환경변수를 설정하도록 설명하는 경우가 많습니다.

이 방법이 틀린 것은 아니지만 사용 환경이 제한되거나 이러한 방법이 리눅스 설정 파일 작성 목적에 맞게 사용되는 것이냐 하는 문제는 별개의 문제입니다.

 

profile은 터미널에 접속할때 적용되는 일반적인 환경설정이 주로 작성되고 터미널에서 실행하는 모든 프로그램에 적용됩니다.

bashrc도 터미널에 접속할때 실행되어 적용되지만 주로 터미널에서의프롬프트 세팅, 명령어 alias, 함수 정의, 쉘 옵션 정의 등을 주 목적으로 작성됩니다.

위 링크는 해당 문단 내용에서 참조한 원문입니다. 

 

$PATH를 설정하는 다양한 방법과 해당 방법이 사용되는 환경 및 장단점은 위 링크를 참고하시기 바랍니다. 

 


로그인한 사용자 $PATH 추가 과정 요약

study@debian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
study@debian:~$ echo 'export PATH=$PATH:/home/study' >> ~/.profile
study@debian:~$ source ~/.profile
study@debian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/study
study@debian:~$

 

개인적으로 위 두 링크 문서는 꼭 읽어보시기를 권장합니다.