배시의 설정 방법을 배우고 본인에 맞는 셸 환경을 만들어본다.
리눅스에는 명령어에 별칭을 붙일 수 있다.
alias
로 자주 사용하는 명령어와 옵션을 별칭으로 설정할 수 있다.
명령어가 별칭인지 아닌지를 확인하기 위해 type
명령어를 사용해 여부 확인이 가능하다.
설정한 별칭을 지우려면 unalias
명령어를 사용한다. 앞에 지우고 싶은 별칭을 인자로 입력한다.
alias
로 별칭을 붙여 놓은 상태에서 일시적으로 무효화하고 싶은 경우가 있다.
- 전체 경로로 명령어 입력
/bin/ls
- command 명령어 사용
command ls
- (역슬래시) 사용
\ls
배시의 여러 가지 옵션 기능은 set
명령어나 shopt
명령어를 사용하여 활성화하거나 비활성화할 수 있다.
그리고 배시의 옵션 기능 중에는 셸 스크립트를 사용할 때만 의미가 있는 기능이 있다.
set -o
: 배시의 옵션 기능 활성화
set +o
: 배시의 옵션 기능 비활성화
자주 사용되는 set 옵션 3가지
set -o ignoreeof
:Ctrl
+d
를 무시
이는 실수로 누른Ctrl
+d
로 셸이 종료되지 않도록 하기 위한 설정이다.
noclobber
: 이미 존재하는 파일을 리다이렉트(redirect)로 덮어쓰지 않음noglob
: 경로 확장을 무효로 함.*
등을 셸에서 확장하지 않음
shopt -s
: 배시의 옵션 기능 활성화
shopt -u
: 배시의 옵션 기능 비활성화
shopt
명령어로 지정할 수 있는 자주 사용되는 옵션
ex)shopt -s cdspell
autocd
: 디렉터리 이름을 입력하면 해당 디렉터리로 이동함dotglob
:*
나?
를 사용한 경로 확장의 결과에.
으로 시작되는 파일도 포함시킴cdspell
:cd
명령어 실행 시 디렉터리 이름의 오타를 자동 교정globstar
: 경로 확장으로**
라는 패턴을 사용하면 서브 디렉터리까지 포함한 모든 파일에 매치됨histappend
: 배시를 종료할 때 히스토리 파일에 명령어 이력을 덮어쓰지 않고 추가함
셸 변수에는 숫자나 문자열 등의 값을 저장할 수 있다.
<변수명>=<값>
여기서 값에 공백을 포함해야 하는 경우에는 작은따옴표(')
나 큰따옴표(")
로 감싸줘야 한다.
설정된 셸 변수의 값은 앞부분에 $
기호를 붙여서 확인할 수 있다.
다만 변수 값 설정 시 =
양옆에 공백이 들어가서는 안된다.
셸 변수의 값을 바꿔서 셸의 프롬프트를 바꿔보겠다.
셸 변수 PS1
에 지정한 값에 의해 프롬프트가 변한 것을 확인할 수 있다.
\u
는 현재 사용자의 이름을 의미하는데, 이를 지정해주니 사용자 이름이 프롬프트에 표시된다.
-w
는 현재 디렉터리를 의미하는데, 이 설정을 하면 프롬프트에 현재 디렉터리가 표시되므로 굳이 pwd
를 사용하지 않아도 된다.
프롬프트에서 사용할 수 있는 기호
\d
: 현재 날짜 (요일, 월, 일 형식)
\h
: 서버의 호스트 이름
\H
: 서버의 도메인 이름
\n
: 개행문자 (줄바꿈)
\t
: HH:MM:SS 형식으로 24시간 단위의 현재 시각 표시
\u
: 사용자 이름
\w
: 현재 디렉터리의 전체 경로 표시
\W
: 현재 디렉터리의 전체 경로 중 마지막 디렉터리만 표시
\$
: 현재의 사용자가 root 사용자이면 #, 그외에는 $를 표시
\\
: \ 문자 자체를 표시
셸 변수 PATH에는 명령어의 위치를 찾는 디렉터리가 저장되어 있다.
본인이 작성한 명령어나 별도로 설치한 애플리케이션의 위치를 PATH에 설정하면 어느 위치에서도 실행할 수 있다. 예를 들어 작성한 명령어를 ~/bin
디렉터리에 배치한다고 하면 PATH="$PATH:~/bin"
이렇게 PATH에 추가해준다. 그러면 ~/bin
밑에 있는 명령어를 어느 위치에서도 실행할 수 있게 된다.
언어, 나라, 지역을 특정하기 위한 식별자인 로케일(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
은 한글로 읽어들이고, 영어면 영문으로 읽어들인다)
현재 셸에 설정된 환경 변수를 출력한다.
export <셸 변수의 이름>
less
명령어 같은 경우 LESS
라는 환경 변수의 값을 참조하여 옵션을 적용한다. 예를 들어 less
명령어를 종료할 때 화면을 지우지 않는 --no-init
옵션을 LESS
환경 변수에 지정하게 되면
less
명령어를 사용할 때마다 --no-init
옵션이 적용되어 실행된다.
LESS='--no-init' (셸 변수에 문자열 값 저장 후)
export LESS (해당 셸 변수를 환경 변수로 설정[export])
export LESS='--no-init' 물론 한 행으로도 가능하다.
다양한 셸의 기능을 알아보았다. 하지만 셸에 설정한 변수나 alias
는 셸이 종료되면 전부 없어진다. 다음에 로그인했을 때도 자동으로 적용되도록 하려면 배시의 설정 파일을 수정해야 한다.
배시는 기동하면서 많은 설정 파일을 읽는다. 이 중에서 사용자별 설정은 ~/.bashrc
파일을 수정하면 된다.
배시가 로그인 셸로 기동하는 경우 먼저 /etc/profile
을 읽는다. 이어서 ~/.profile
을 읽는다. 배시는 여기에 적힌 설정을 하나씩 실행한다.
배시에 대한 설정을 바꾸기 위해서는 이들 설정 파일을 Vim
등의 에디터로 수정하면 된다.
etc/profile
은 시스템 전체에 적용되는 설정 파일이다. 모든 사용자에게 적용하고자 할 때는 이 파일을 수정하면 된다.
~/.profile
은 사용자별 설정 파일이다. 대부분의 배포판에서 ~/.profile
에 ~/.bashrc
를 실행하는 코드가 포함되어 있다.
~/.profile
와 ~/.bashrc
는 둘 다 개인 사용자별 배시 설정 파일이다.~/.profile
은 로그인할 때만 읽히며, ~/.bashrc
는 배시가 기동할 때마다 읽힌다. 따라서 로그인할 때 한 번만 설정하면 되는 항목은 ~/.profile
에 기재하고, 배시를 기동할 때마다 설정해야 하는 항목은 ~/.bashrc
에 기재하면 된다.대부분의 설정은 배시가 기동할 때마다 읽혀야 하므로 ~/.bashrc
에 설정하는 것이 보통이다.
~/.bashrc
를 수정하기 전에 반드시 다른 이름으로 백업해 두는 것이 좋다.
cp .bashrc .bashrc.org
이렇게 두면 실수로 잘못된 내용을 기재하거나 지워져도 .bash.org
에서 복원할 수 있기 때문이다.
이렇게 설정 파일을 백업했어도 복원하기 어려운 상태에 빠질 수도 있다. ~/.bashrc
에 exit
를 기재하면 로그인 직후에 자동으로 로그아웃하게 되며, 두 번 다시 로그인할 수 없는 상태에 빠지게 된다.
이러한 상태에 빠지지 않기 위해서는 ~/.bashrc
를 수정하기 전에 별도의 셸을 기동해 놓는 것이 좋다. 즉, 두 개의 터미널에서 접속해 놓고 한 터미널에서 설정 변경 작업을 진행하면 된다.
한쪽에서 로그인이 불가능한 상태에 빠지더라도 이미 로그인한 별도의 셸에서 복원하면 된다.
복원할 때는 Vim
으로 설정 파일을 열어 잘못된 부분을 수정하거나 백업해 둔 .bashrc.org
파일을 .bashrc
에 덮어쓰면 되겠다.
Vim
을 사용하여 ~/.bashrc
파일을 열어 마지막 행에 PS1 내용을 기재한다.
프롬프트가 변경되었고, 로그인할 때마다 기재된 설정이 반영된다.
source
명령어는 파일 내용을 읽어서 실행한다.
동작에 영향을 미치지 않는 메모와 같다.
배시에서는 #
이후의 내용이 주석으로 간주된다.
자기 자신만의 배시 설정 파일을 만들어 더욱 더 편리하게 리눅스를 활용할 수 있도록 해보자.