드레스룸 시스템행거 인테리어

반응형

linux path 설정 bashrc ? /etc/bashrc ?

 

 

PATH란 쉽게 생각해서 내가 linux상에서 커맨드를 입력하였을 때 command not found 가 나오지 않고

 

어떠한 경로에서도 내가 원하는 명령어를 사용할 수 있도록 설정하는 것이다.

 

 그렇다면 사용자 홈 디렉터리에 있는 .bashrc는 무엇이고 /etc/bashrc는 무엇일까

 

 

 

.bashrc 는 지역변수라고 한다. 한마디로 개인 사용자 환경설정이다.

 

/etc/bashrc 전역 변수라고 한다. 전체 사용자에게 전용되는 환경 설정이다.

 

redhat계열인 centos는 /etc/bashrc 이지만 debian계열의 ubuntu는 /etc/bash.bashrc 이다. 

 

 

어떤 차이가 있는지 한번 정확하게 살펴보자.

 

내 Test서버에는 root 관리자 권한 계정과 ckkim, test의 두 유저가 생성되어있다.

 

 

root

 

(base) root@ubuntu:~# tail -n 5 /etc/bash.bashrc
# export PATH=/usr/local/cuda-10.0/bin:$PATH
# export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
# export LD_LIBRARY_PATH=/usr/local/cuda-10.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH

export PATH=/root/anaconda3/bin:$PATH
(base) root@ubuntu:~# nvcc -V

Command 'nvcc' not found, but can be installed with:

apt install nvidia-cuda-toolkit

 

전역 변수에 cuda path를 설정하였다가 주석 처리해놓은 상태라 nvcc -V 의 command를 찾을 수 없는 것이다.

 

위에 말한 것처럼 ubuntu server는 /etc/bashrc 가 아닌 /etc/bash.bashrc 이다.

 

 

 

ckkim

 

ckkim@ubuntu:~$ tail -n 4 .bashrc

export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
ckkim@ubuntu:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

 

cuda 10.0 path를  ckkim 홈 디렉토리 .bashrc에 입력되어있어 nvcc version이 10.0으로 표기되었다.

 

 

 

 

test

 

test@ubuntu:~$ tail -n 4 .bashrc

export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
test@ubuntu:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Thu_Jun_11_22:26:38_PDT_2020
Cuda compilation tools, release 11.0, V11.0.194
Build cuda_11.0_bu.TC445_37.28540450_0

 

test계정 역시 홈 디렉토리 .bashrc에 cuda 11.0 path를 입력해 두었다.

 

왜 지역변수와 전역 변수를 나누는 것일까? 전역 변수로 한 번에 모든 계정의 path를 하면 안 될까라는 생각도 들 수 있다.

 

그 생각을 지우기 위해 위와 같은 cuda로 설명해 두었다. 

 

cuda를 사용하는 개발자분들은 cuda 10.0, cuda 9.0, cuda 10.2 이런 식으로 본인이 맞는 버전을 쓰게 되어있는데

 

/etc/bashrc에 전역 변수로 한 version의 적용이 되게 되면 서로 불편한 일이 생길 수 있다.

 

 

 

 

centos

 

[root@centos ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Dec 29  2013 .bashrc
[root@centos ~]# ls /etc/bashrc
/etc/bashrc

 

마지막으로 centos의 지역변수는 ubuntu와 동일하게 .bashrc이며 전역 변수는 /etc/bashrc 이다.

 

 

2020/07/20 - [linux] - linux - hostname, hosts 파일 및 hosts.deny hosts.allow 알아보기

2020/07/19 - [linux] - ssh 접속 MobaXterm

2020/07/15 - [linux] - sosreport 및 nvidia-bug-report 시스템 log 추출 툴

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band