본문 바로가기
Back-end/Linux

Linux : .bashrc 파일 이용하기(Non-login Shell, Login Shell)

by somlang_bba 2023. 1. 18.
728x90

Docker에서 인스턴스를 처음 생성하면 인스턴스를 생성하기 위한 몇가지의 명령어를 빼고는 저장이 안되어 있다.

 

* 몇가지의 명령어 : cd, ls, pwd 등 기본적인 명령어 + curl 정도

 

따라서 이들을 alias로 등록해주면 더욱 편리한 환경을 만들 수 있다.

$> ll
bash: ll: command not found

$> alias ll="ls -al"

$> ll

total 76
drwxr-xr-x     1 root root 4096 Jan 16 17:37 .
drwxr-xr-x     1 root root 4096 Jan 16 17:37 ..
-rwxr-xr-x     1 root root    0 Jan 16 14:50 .dockerenv
lrwxrwxrwx     1 root root    7 Nov  4  2020 bin -> usr/bin
drwxr-xr-x     1 root root 4096 Jan 16 17:24 etc
drwxr-xr-x     1 root root 4096 Jan 16 14:50 home
...
drwxr-xr-x     1 root root 4096 Sep 15  2021 usr
drwxr-xr-x     1 root root 4096 Sep 15  2021 var

 

하지만 alias 명령어로 등록하면 해당 인스턴스를 종료하면 등록한 alias도 함께 날라간다.

 

그래서 .bashrc 파일이나 .bash_profile 파일에 해당 내용을 기재해 주면 된다.

 

.bashrc파일은 로그인을 하지 않은 상태에서 쉘(non-Login Shell)을 시작할때의 설정파일이고

.bash_profile은 로그인을 했을때의 쉘(Login Shell)을 시작할때의 설정파일이다.

그래서 공통적인 사항들은 .bashrc에 작성을 하고 .bash_profile에서 불러다가 적용하는 방식으로 작성한다. 

 

위 내용을 인터넷에서 찾아보면서 확인 했지만, 어떤 내용인지 잘 이해가 가지 않아서 직접 실습을 해보기로 했다.

 

실습내용

.bashrc파일에 cls라는 alias를 추가하여 clear 명령어를 조금 더 쉽게 사용해보려 하였다.

alias 작성

 

 

그런데, source 명령어를 이용하여 .bashrc에 있는 내용을 적용하려 하였더니 아래와 같이 엉망이 되어버렸다.

 

아마 필자가 사용중인 쉘이 zsh이어서 어떠한 충돌로 인하여 그런것이라는 짐작이 들었다.

혹시 터미널을 재시작하면 자동 적용되어서 설정파일에 넣어둔 cls를 사용할 수 있지 않을까 했지만

사용이 불가함을 알 수 있었다... 그렇다면 bash로 쉘을 열면 사용이 가능할까?

bash에서는 잘 동작함을 알 수 있다. non-login shell에서는 .bashrc에 설정값을 읽어다가 세팅한다는 것을 알 수 있다.

 

다음으로 그럼 login shell에서는 .bashrc에 적혀있는 설정값을 가져다 쓰지 않는것일까? 라는 의문이 생겼다.

su 명령어를 이용하여 계정을 변경하고 Login을 통해 bash접근을 하였다. cls를 통해 clear를 실행하려 하였으나

cls 커멘드를 찾을 수 없다는 답변이 되돌아 온 것을 알 수 있다.

728x90