다시 시작하는 리눅스 #9 배시 설정

최동민·2022년 12월 28일
0

Linux

목록 보기
18/25
post-thumbnail

배시

배시의 설정 방법을 배우고 본인에 맞는 셸 환경을 만들어본다.

alias

리눅스에는 명령어에 별칭을 붙일 수 있다.
alias 로 자주 사용하는 명령어와 옵션을 별칭으로 설정할 수 있다.

명령어가 별칭인지 아닌지를 확인하기 위해 type 명령어를 사용해 여부 확인이 가능하다.

설정한 별칭을 지우려면 unalias 명령어를 사용한다. 앞에 지우고 싶은 별칭을 인자로 입력한다.

alias로 별칭을 붙여 놓은 상태에서 일시적으로 무효화하고 싶은 경우가 있다.

  • 전체 경로로 명령어 입력
    /bin/ls
  • command 명령어 사용
    command ls
  • (역슬래시) 사용
    \ls

배시 옵션

배시의 여러 가지 옵션 기능은 set 명령어나 shopt 명령어를 사용하여 활성화하거나 비활성화할 수 있다.
그리고 배시의 옵션 기능 중에는 셸 스크립트를 사용할 때만 의미가 있는 기능이 있다.

set

set -o : 배시의 옵션 기능 활성화
set +o : 배시의 옵션 기능 비활성화

자주 사용되는 set 옵션 3가지

  • set -o ignoreeof : Ctrl + d를 무시
    이는 실수로 누른 Ctrl + d로 셸이 종료되지 않도록 하기 위한 설정이다.
  • noclobber : 이미 존재하는 파일을 리다이렉트(redirect)로 덮어쓰지 않음
  • noglob : 경로 확장을 무효로 함. * 등을 셸에서 확장하지 않음

shopt

shopt -s : 배시의 옵션 기능 활성화
shopt -u : 배시의 옵션 기능 비활성화

shopt 명령어로 지정할 수 있는 자주 사용되는 옵션
ex) shopt -s cdspell

  • autocd : 디렉터리 이름을 입력하면 해당 디렉터리로 이동함
  • dotglob : *?를 사용한 경로 확장의 결과에 .으로 시작되는 파일도 포함시킴
  • cdspell : cd 명령어 실행 시 디렉터리 이름의 오타를 자동 교정
  • globstar : 경로 확장으로 **라는 패턴을 사용하면 서브 디렉터리까지 포함한 모든 파일에 매치됨
  • histappend : 배시를 종료할 때 히스토리 파일에 명령어 이력을 덮어쓰지 않고 추가함

셸 변수

셸 변수에는 숫자나 문자열 등의 값을 저장할 수 있다.

변수 설정

<변수명>=<값>
여기서 값에 공백을 포함해야 하는 경우에는 작은따옴표(')큰따옴표(")로 감싸줘야 한다.
설정된 셸 변수의 값은 앞부분에 $ 기호를 붙여서 확인할 수 있다.

다만 변수 값 설정 시 = 양옆에 공백이 들어가서는 안된다.

PS1 : 프롬프트 설정

셸 변수의 값을 바꿔서 셸의 프롬프트를 바꿔보겠다.
셸 변수 PS1에 지정한 값에 의해 프롬프트가 변한 것을 확인할 수 있다.

\u 는 현재 사용자의 이름을 의미하는데, 이를 지정해주니 사용자 이름이 프롬프트에 표시된다.

-w 는 현재 디렉터리를 의미하는데, 이 설정을 하면 프롬프트에 현재 디렉터리가 표시되므로 굳이 pwd를 사용하지 않아도 된다.

프롬프트에서 사용할 수 있는 기호

  • \d : 현재 날짜 (요일, 월, 일 형식)
    \h : 서버의 호스트 이름
    \H : 서버의 도메인 이름
    \n : 개행문자 (줄바꿈)
    \t : HH:MM:SS 형식으로 24시간 단위의 현재 시각 표시
    \u : 사용자 이름
    \w : 현재 디렉터리의 전체 경로 표시
    \W : 현재 디렉터리의 전체 경로 중 마지막 디렉터리만 표시
    \$ : 현재의 사용자가 root 사용자이면 #, 그외에는 $를 표시
    \\ : \ 문자 자체를 표시

PATH : 명령어를 찾는 경로

셸 변수 PATH에는 명령어의 위치를 찾는 디렉터리가 저장되어 있다.

본인이 작성한 명령어나 별도로 설치한 애플리케이션의 위치를 PATH에 설정하면 어느 위치에서도 실행할 수 있다. 예를 들어 작성한 명령어를 ~/bin 디렉터리에 배치한다고 하면 PATH="$PATH:~/bin" 이렇게 PATH에 추가해준다. 그러면 ~/bin 밑에 있는 명령어를 어느 위치에서도 실행할 수 있게 된다.

LANG : 로케일

언어, 나라, 지역을 특정하기 위한 식별자인 로케일(locale).
언어나 날짜의 표시 방식은 로케일 값에 따라 변한다.
현재 사용 중인 로케일은 LANG이라는 변수에 저장된다.
시스템에서 지원하는 로케일은 locale -a 로 확인 가능하다.

그 외의 셸 변수

  • 많이 사용되는 셸 변수
    HISTFILE : 커맨드 라인 이력을 저장할 파일 이름. 기본값은 ~/.bash_history
    HISTFILESIZE : 파일에 저장할 커맨드 라인 이력의 최대 개수
    HISTSIZE : 메모리에 저장할 커맨드 라인 이력의 최대 개수
    (HISTFILESIZE와 HISTSIZE의 기본값은 500이다.)
  • 셀 상태 관련 셸 변수
    HOME : 홈 디렉터리
    SHELL : 로그인 셸의 경로
    PWD : 현재 디렉터리
    이를테면 틸드 대신에 HOME 변수를 사용할 수 있다.

환경 변수

명령어 중에는 파일 시스템에 실행 파일로 존재하는 외부 명령어가 있고, 셸 자체에 포함된 내장 명령어가 있다.
구분하기 위해서는 type 명령어를 사용한다.
다음과 같이 set 명령어는 내장 명령어이고, cp 명령어는 /bin/cp에 실행 파일이 있는 외부 명령어임을 알 수 있다.

여기서 외부 명령어는 셸 외부에서 실행된다.
외부 명령어는 셸 변수를 참조할 수 없다. 하지만 LANG에 설정된 로케일과 같이 외부 명령어에서도 참고하면 좋을 변수들이 있는데, 이처럼 외부 명령어에서도 값을 참조할 수 있는 변수를 환경 변수라고 한다.
실은 LANG이라는 셸 변수는 환경 변수이다. 따라서 LANG에 설정된 값에 따라 cat과 같은 외부 명령어의 출력 결과가 바뀐다.
(LANG이 한글이면 cat은 한글로 읽어들이고, 영어면 영문으로 읽어들인다)

printenv : 환경 변수 표시

현재 셸에 설정된 환경 변수를 출력한다.

export : 환경 변수 설정

export <셸 변수의 이름>
less 명령어 같은 경우 LESS라는 환경 변수의 값을 참조하여 옵션을 적용한다. 예를 들어 less 명령어를 종료할 때 화면을 지우지 않는 --no-init 옵션을 LESS 환경 변수에 지정하게 되면
less 명령어를 사용할 때마다 --no-init 옵션이 적용되어 실행된다.

LESS='--no-init' (셸 변수에 문자열 값 저장 후)
export LESS (해당 셸 변수를 환경 변수로 설정[export])

export LESS='--no-init' 물론 한 행으로도 가능하다.

배시 설정 파일

다양한 셸의 기능을 알아보았다. 하지만 셸에 설정한 변수나 alias는 셸이 종료되면 전부 없어진다. 다음에 로그인했을 때도 자동으로 적용되도록 하려면 배시의 설정 파일을 수정해야 한다.

/etc/profile, ~/.profile, ~/.bashrc

배시는 기동하면서 많은 설정 파일을 읽는다. 이 중에서 사용자별 설정은 ~/.bashrc 파일을 수정하면 된다.
배시가 로그인 셸로 기동하는 경우 먼저 /etc/profile을 읽는다. 이어서 ~/.profile을 읽는다. 배시는 여기에 적힌 설정을 하나씩 실행한다.

배시에 대한 설정을 바꾸기 위해서는 이들 설정 파일을 Vim 등의 에디터로 수정하면 된다.

etc/profile은 시스템 전체에 적용되는 설정 파일이다. 모든 사용자에게 적용하고자 할 때는 이 파일을 수정하면 된다.
~/.profile은 사용자별 설정 파일이다. 대부분의 배포판에서 ~/.profile~/.bashrc를 실행하는 코드가 포함되어 있다.

  • 어떤 설정 파일을 바꿀까?
    ~/.profile~/.bashrc는 둘 다 개인 사용자별 배시 설정 파일이다.
    ~/.profile은 로그인할 때만 읽히며, ~/.bashrc는 배시가 기동할 때마다 읽힌다. 따라서 로그인할 때 한 번만 설정하면 되는 항목은 ~/.profile에 기재하고, 배시를 기동할 때마다 설정해야 하는 항목은 ~/.bashrc에 기재하면 된다.

대부분의 설정은 배시가 기동할 때마다 읽혀야 하므로 ~/.bashrc에 설정하는 것이 보통이다.

설정 파일 변경 시 주의 사항

~/.bashrc를 수정하기 전에 반드시 다른 이름으로 백업해 두는 것이 좋다.

cp .bashrc .bashrc.org

이렇게 두면 실수로 잘못된 내용을 기재하거나 지워져도 .bash.org에서 복원할 수 있기 때문이다.

이렇게 설정 파일을 백업했어도 복원하기 어려운 상태에 빠질 수도 있다. ~/.bashrcexit를 기재하면 로그인 직후에 자동으로 로그아웃하게 되며, 두 번 다시 로그인할 수 없는 상태에 빠지게 된다.

이러한 상태에 빠지지 않기 위해서는 ~/.bashrc를 수정하기 전에 별도의 셸을 기동해 놓는 것이 좋다. 즉, 두 개의 터미널에서 접속해 놓고 한 터미널에서 설정 변경 작업을 진행하면 된다.
한쪽에서 로그인이 불가능한 상태에 빠지더라도 이미 로그인한 별도의 셸에서 복원하면 된다.
복원할 때는 Vim으로 설정 파일을 열어 잘못된 부분을 수정하거나 백업해 둔 .bashrc.org 파일을 .bashrc에 덮어쓰면 되겠다.

설정 파일 읽기

Vim을 사용하여 ~/.bashrc 파일을 열어 마지막 행에 PS1 내용을 기재한다.

프롬프트가 변경되었고, 로그인할 때마다 기재된 설정이 반영된다.
source 명령어는 파일 내용을 읽어서 실행한다.

주석

동작에 영향을 미치지 않는 메모와 같다.
배시에서는 # 이후의 내용이 주석으로 간주된다.


자기 자신만의 배시 설정 파일을 만들어 더욱 더 편리하게 리눅스를 활용할 수 있도록 해보자.

profile
코드를 두드리면 문이 열린다

0개의 댓글