Bourne Again Shell, Bash는 Bourne 쉘 과의 호환은 물론 ksh, csh 등의 장점을 결합하여 리눅스에서 가장 많이 사용되는 쉘입니다. 그만큼 명령 히스토리, 명령어 치환, 입력 자동 완성 등의 편리한 기능도 제공합니다.
bash에서는 개인 사용자 관련 환경 설정이나 로그인 시 읽는 파일 등을 따로 관리하여 저장하고 있습니다. 다음 표는 bash가 기본적으로 관리하는 5개의 파일과 그 설명입니다.
파일명 | 설명 |
/etc/bash.bashrc | 모든 사용자의 alias 관련 함수 설정 |
~/.bashrc | 개인 사용자의 alias 관련 함수 설정 |
/etc/profile | 모든 사용자에게 적용되는 환경 변수, 시작 프로그램 등 일반 환경 설정 파일 |
~/.bash_profile | 개인 사용자의 환경 설정과 시작 프로그램 설정 (일반 환경 설정 무시 가능) |
~/.bash_logout | 개인 사용자 로그아웃 시 지정 설정 |
기본적으로 bash 자체에 대한 설정은 /etc 디렉터리 내에서 진행되며, 이 파일에 설정된 내용은 전체 사용자에게 적용됩니다. 따라서 /etc/profile, /etc/profiel.d, /etc/bashrc는 전역적인 파일이라고 이해하면 됩니다.
쉘을 사용하는 개인에게 적용되는 설정 파일들은 개개인의 홈 디렉터리 내에 위치합니다. 예를 들어 내 계정의 홈 디렉터리가 /home/mika라면, '나'라는 개인 사용자에 맞춰 설정하는 파일들의 경로는 다음과 같습니다: /home/mika/.bash_profile, /home/mika/.bash_logout, /home/mika/.bashrc
이 위 설정 파일을 bash 초기화 파일이라고도 하는데 다음과 같은 순서로 읽혀집니다.
- /etc/profile 파일이 있는 경우 실행
- /etc/profile.d/*.sh 폴더 내 쉘스크립트 확장자(.sh)로 된 파일을, 파일명 알파뱃 순으로 실행
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_login
- ~/.profile
- ~/.bash_logout: 로그아웃시 실행
bash 환경 설정 포스팅에서는 bash의 설정 파일에 대해 알아보고 파일을 수정하여 alias(별칭, 단축키) 설정, 환경 변수 설정 (path 설정) 그리고 간단한 스크립트를 짜보도록 하겠습니다.
(1) alias (별칭/단축키) 설정
리눅스에는 alias라는 명령어가 있습니다. 자주 쓰는 긴 명령어를 내가 지정한 짧은 단어로 대체해 같은 동작을 하게끔 하는, 별칭을 지정하는 명령어입니다.
예를 들어 find . -name "ls" 2> /dev/null 이라는 명령어가 너무 길어서, fls 라는 별칭을 지어주고자 합니다.
이 때 alias 명령어를 이용해 alias fls="find . -name "ls" 2> /dev/null 이라고 별칭을 지정해줌으로써 fls라는 명령어를 입력해 같은 출력 결과를 얻을 수 있습니다.
하지만 이렇게 새로 만들어준 fls는 일시적입니다. 다음에 로그인해도 사용할 수 없습니다. 이렇게 되면 로그인을 할 때마다 항상 fls를 정의해주어야 합니다. fls라는 명령어를 마치 내장 명령어처럼 지속적으로 사용하고 싶다면 관련 설정을 변경하는 것이 훨씬 쉬운 일일 것입니다.
alias에 관한 설정은 /etc/bashrc 또는 ~/.bashrc 파일에서 관리하고 있습니다. 개인 사용자(mika)의 명령어 별칭 지정이므로 개인 사용자의 홈 디렉터리(/home/mika)에서 vi .bashrc를 실행하겠습니다.
.bashrc 파일을 잘 읽어보면 여러가지 alias를 지정해주는 라인들이 보입니다.
여기서 alias 지정 라인을 추가해주겠습니다.
저장 후 터미널을 alias로 지정한 별칭 명령어가 동작합니다.
그런데 만약 mika가 아닌 다른 계정이 fls 명령어 실행을 시도한다면 어떻게 될까요? 애초에 건들인 파일이 mika의 홈디렉터리에 위치한 /home/mika/.bashrc 였기 때문에 다른 계정에서는 fls의 alias 지정을 알 리 없습니다.
이렇게 전 계정에 걸쳐 특정 명령어에 대한 별칭을 지정하고 싶다면, ~/.bashrc가 아니라 /etc 디렉터리 밑의 /etc/bashrc 파일을 수정해야 합니다.
먼저 root 계정으로 전환 후, vi /etc/bash.bashrc를 실행해봅시다. 이번엔 fls와 비슷한 기능을 하지만 검색 문자열만 바꾼, fcat이라는 별칭을 만들어보았습니다.
아까처럼 터미널을 닫았다가 다시 열거나, 'source' 명령어를 사용해 편집된 내용을 적용시킨 다음, fcat을 입력했습니다. 잘 동작되고 있습니다. mika 계정의 홈디렉터리에서 지정했던 fls 명령어는 역시 작동되지 않습니다.
다시 matiii 계정으로 돌아가보겠습니다. 이 곳에서는 어떤 alias도 지정하지 않았습니다. 하지만 /etc/bash.bashrc에서 지정한 fcat 명령어를 사용할 수 있습니다.
'SYSTEM' 카테고리의 다른 글
bash (3) 간단한 계산기 스크립트 짜기 (1) | 2021.03.11 |
---|---|
bash (2) 환경 변수 설정 (1) | 2021.03.10 |
useradd/adduser 안쓰고 직접 파일 수정하여 계정 생성하기 (0) | 2021.03.09 |
LINUX 계열 별 useradd와 adduser의 차이점 (+userdel와 deluser) (0) | 2021.03.09 |
Windows Server와 CentOS의 계정 관리 정책 분석 (0) | 2021.03.08 |