Computer

bashrc 설정, 생성되는 파일 권한 설정

Novelism 2022. 4. 18. 23:34

bash는 리눅스에서 많이 사용되는 쉘 환경 중 하나입니다. 

.bashrc는 bash 의 유저 설정 파일입니다. 

새 터미널이 bash 로 시작되면. profile 이 먼저 읽어집니다.

.profile을 열어보면

$HOME/.bashrc 파일이 있으면 $HOME/.bashrc 파일을 source에 추가하라고 되어있습니다. 

. $HOME/.bashrc 라 적힌 줄이 있습니다. 

리눅스에서 . 은 source 명령어와 같습니다. 

source나 . 은 현재 쉘에 스크립트 파일을 적용하라는 의미입니다.

스크립트 파일이 실행 가능이 아닐 때 사용하는 것 같습니다. 

 

.bashrc 파일에서 자주 사용하는 설정입니다. 

 

 

 

umask 022
alias ssh='ssh -Y'
alias ls='ls --color=tty -F'

export PYTHONPATH="/home/ggg/Programs/pdbtools:${PYTHONPATH}"
export PATH="/home/ggg/Programs/pdbtools/bin:$PATH"
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export VECLIB_MAXIMUM_THREADS=1

export CUDA_VISIBLE_DEVICES=7

 

umask는 새로 생성되는 파일의 기본 권한을 제어하는 명령어입니다.

이 세 숫자는 각각 유저 권한, 그룹 권한, 기타 권한을 의미합니다.

 권한 자체라기보다는 권한의 보수입니다. 

0이라면, 권한 7이 생성됩니다. 

파일 권한은 읽기, 쓰기, 실행 세 가지가 있는데 

이를 3개의 2진수로 표현합니다. 권한이 있으면 1, 없으면 0입니다. 

3개의 권한을 모두 가진다면, 2진수로 111 로 표현되고 이를 10진수를 변환하면 7입니다.

읽기, 쓰기 권한만 가지면 110 로 표현하고, 이는 6입니다. 

읽기, 실행 권한만을 가지면 101이고 이는 5에 해당합니다. 

 

chmod 755 라고 적으면, 유저에겐 7의 권한을, 그룹과 기타 사용자에겐 5의 권한을 준다는 의미입니다.

 

umask의 022는 새로 생성되는 파일 (touch 나 vi 등으로 만들어진)에 755의 권한을 주라는 의미입니다. 

다만, umask 명령어는 쓰기 권한을 주진 않기에 파일은 644의 권한으로 만들어집니다. 

즉, umask 022나 umask 133 이나 같은 결과가 나옵니다. 

 

alias ssh='ssh -Y'
alias ls='ls --color=tty -F'

alias 는 단축 명령어를 지정하는 명령어입니다. 

위의 명령어처럼 지정하면 ssh -Y 를 입력하는 대신 ssh 만 쳐도 동일한 결과가 나옵니다. 

 

 

export PATH="/home/ggg/anaconda3/bin:$PATH"

PATH 에 경로를 추가하고, 이를 환경 변수로 내보내라는 의미입니다. 내보내기 전까지는 bash 변수입니다. 

환경변수는 python 등 별도의 프로그램에서 읽어올 수 있습니다. 

환경변수는 env 명령으로 확인할 수 있습니다. 

 

이것이 실행되면, PATH에 설정되어있는 경로에 있는 실행파일들은 어디서나 경로를 적어주지 않아도 실행이 가능합니다. 경로에 포함된 대표적인 폴더는 /usr/bin 폴더가 있습니다. 

예를 들어 우리가 ls 라는 명령어를 실행하면 실제로는 파일인 /usr/bin/ls 가 실행되는 것입니다. 

 실행할 명령어의 전체 경로를 찾는 명령어는 which 입니다. which 도 사실은 실행파일입니다. 

 하지만 명령어 중 cd 는 파일이 아닙니다. 아마 이렇게 실행파일이 아닌 것을 내부 명령어라 하고 실행파일인 것을 외부 명령어라 부르던 것 같습니다. 

 

export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export VECLIB_MAXIMUM_THREADS=1

OMP_NUM_THREADS1은 openmp에서 사용할 threads의 수를 지정하는 환경변수 입니다. 하드웨어의 threads의 수만큼으로 지정할 수도 있지만 (0), 병렬화를 직접 제어할 경우는 이 수치도 직접 조절해야 합니다. 

python에서 numpy도 멀티 스레드를 사용하도록 되어있는데, 단일 스레드로 사용하고 싶다면, 위 설정을 적용해줍니다. 

(5개 중 무엇인지 정확히 모르겠습니다.)

 

export PYTHONPATH="/home/ggg/Programs/pdbtools:${PYTHONPATH}"
export PATH="/home/ggg/Programs/pdbtools/bin:$PATH"

PATH와 비슷하게 PYTHONPATH 라는 변수가 있습니다. 

이 변수에 등록된 경로는 PYATHON library 경로에 포함되고, import 명령어의 참조 경로가 됩니다. 

 

export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

LD_LIBRARY_PATH 도 PATH나 PYTHONPATH와 비슷합니다. 

 프로그램을 실행할 때 필요한 라이브러리를 참조할 경로를 추가해주는 것입니다. 

ldd 명령어로 프로그램 실행시 필요한 (동적) 라이브러리를 확인할 수 있습니다.