[Linux] 8.배시 설정

2022. 8. 14. 03:54

이 글은 '모두의 리눅스'라는 책을 공부하면서 배운 내용을 기록한 곳입니다. 책과 다른 부분이 있을 수도 있고 잘못 이해해 틀린 부분이 있을 수 있다는 점 주의하시며 읽어주시기 바랍니다. 

 

1. alias

리눅스에서는 명령어에 별칭을 붙일 수 있다. 

alias <name>='<command>'

 

예를 들어 rm 명령어를 사용할 때 -i 옵션을 항상 사용하는데 붙이기 귀찮을 때 alias 를 사용하려 별칭으로 지어주면 된다.

alias rm='rm -i'

 

 

설정한 별칭을 지우려면 unalias를 사용하면 된다. 

 

만약 일시적으로 해제하고 싶다면 명령어의 전체 경로를 입력하거나 command 명령어를 이용하면 된다. 

 

2. bash의 옵션

만약 bash가 무엇인지 기억이 안나면 아래 포스팅을 참고하길 바란다. bash란 셸의 일종이라고 생각하면 된다. 

2022.08.10 - [Tool/Linux] - [Linux] 2. 셸이란 무엇인가?

 

[Linux] 2. 셸이란 무엇인가?

이 블로그는 '모두의 리눅스'라는 책을 이용해 개인적으로 공부한 내용을 간략하게 적은 것이기 때문에 책 내용과 다를 수 있다는 점 고려해서 참고해주시기 바랍니다! 1. 셸이란? 2장은 셸이란

mobuk.tistory.com

 

배시의 여러가지 옵션 기능을 설정하는 방법이 있다. 배시의 옵션 기능 중에서는 셸 스크립트를 사용할 때만 의미가 있는 것들이 있고 이러한 기능은 17장에서 살펴본다. 

1) set

set 명령어는 -o 나 +o를 지정하여 옵션 기능을 활성화하거나 비활성화 할 수 있다. 

set -o/+o <option name>

 

위 예시는 ignoreeof(ctrl d)의 기능을 꺼주는 것이다. 만약 이렇게 설정해주면 실수로 ctrl+ d를 눌러 셸이 종료되는 것을 막을 수 있다. 

사용가능한 옵션 중 자주 쓰이는 것은 다음과 같다. 

ignoreeof ctrl+d 로 인한 셸 종료 방지
noclobber 이미 존재하는 파일을 리다이렉트로 덮어쓰지 않음
noglob 경로확장을 무효로 함. *등을 셸에서 확장하지 않음.

 

2) shopt

shopt -s/-u <option name>

-s를 지정하면 활성화되고 -u를 지정화하면 비활성화된다. 

사용가능한 옵션 중 가능한 것은 다음과 같다. 

actocd 디렉터리 이름을 입력하면 해당 디렉터리로 이동함
dotglob *나 ?를 사용한 경로 확장의 결과에 .도 포함함
cdspell cd 명령어 실행 시 디렉터리 오타를 자동 수정
globstar **를 사용하면 서브 디렉터리까지 포함한 모든 파일에 매치됨
histappend 배시를 종료할 때 히스토리 파일에 명령어 이력을 덮어쓰지 않음.

 

만약 더 자세한 명령어들을 알고 싶으면 man bash를 이용해 살펴보면 된다. 

 

3. 셸 변수

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

<variable name>=<value>

만약 공백을 포함해야하는 경우라면 작은 따옴표나 큰따옴표로 감싸줘야한다. 셸 변수의 값은 $ 기호를 붙여 확인가능하다. 

주의해야할 점은 셸에서는 공백을 넣으면 안된다는 것이다. 

 

아래는 셸변수의 예시들이다. 

1) PS1 : 프롬프트 설정 

셸 변수의 값을 바꿔서 프롬프트를 바꿀 수 있다.

PS1='bash>'

셸 변수 PS1에 지정한 값에 맞게 프롬프트가 변경된다. 이때 \u (사용자의 이름) 등을 넣을 수도 있다. 

 

2) PATH

path에는 명령어의 위치를 찾는 디렉터리가 저장되어 있다. 만약 내가 새로운 명령을 추가했다고 하면 이 path를 설정해주면 사용 가능하다. 

본인의 명령어를 ~/bin에 배치했다고 하면 PATH="$PATH:~/bin" 으로 설정해주면 된다.

 

3) LANG: 로케일

리눅스를 설치할 때 한국어를 선택했다면 에러 메시지 등이 한글로 표시된다. 이것은 식별자인 로케일이 한국으로 설정되어 있기 때문이다. 시스템에서 지원하는 로케일은 -a 옵션으로 확인할 수 있다. 

로케일을 변경할 수도 있다. 

 

4. 환경 변수

명령어 중에는 파일 시스템에 실행 파일로 존재하는 외부 명령어가 있고 셸 자체에 포함된 내장 명령어들이 있다. type으로 내장인지 외장인지 확인 할 수 있다. 

cp는 외부, set은 내장이다.

만약 외부 명령어라면 실제 실행이 셸 외부에서 실행되기 때문에 셸 변수를 참고할 수 없다. 그래서 환경변수 설정을 해주어야 한다.

1) 환경변수 표시

printenv를 이용해 환경변수들을 표시할 수 있다 .

 

2) 환경변수 설정

export <name of shell variable>

셸 변수를 하나 만든 후 export 셸 변수를 하면 환경변수로 지정된다. 

 

5. 배시 설정 파일

위에서의 다양한 설정은 셸이 종료되면 전부 사라진다. 다음에 로그인을 했을 때에도 적용되기 위해서는 배시의 설정파일을 수정해야한다.

1) etc/profile, ~/.profile, ~/.bashrc

배시는 다양한 설정 파일을 읽는다. 

  • 사용자별 설정 : ~/.bashrc
  • 로그인 셸 : etc/profile 이후 ~/.profile

배시의 설정을 바꾸려면 이들 설정파일을 vim 에디터로 수정하면 된다. 

~/.profile은 로그인할 때만 실행되고 ~/.bashrc는 배시가 실행될 때마다 실행된다는 원리를 기억해 적절한 기능을 적절한 파일에서 수정해주면 된다. 

하지만, 대부분의 기능은 bash가 실행될 때마다 읽혀야하기 때문에 ~/.bashrc에 설정하는 것이 보통이다.

 

2) 주의사항

배시의 설정파일을 수정하기 전 백업을 해두는 것이 중요하다. 만약 잘못된 내용을 기재하거나 실수로 삭제해도 복원을 할 수 있기 때문이다. 

cp .bashrc .bashrc.org

하지만, 가끔 백업을 해도 복원이 안되는 일이 있을 수 있다. 그래서 예비로 셸을 가동해두는 것이 좋다. 그럼 하나의 셸이 불구 상태가 되어도 다른 한 곳에서 파일을 복원할 수 있기 때문이다.

 

3) 설정 파일 읽기

vim을 사용하여 ~/.bashrc 파일을 읽어보자.

 

문서를 조금 살펴보니 우리가 앞에서 다루었던 명령어도 확인을 할 수 있었다.

 

맨 마지막 줄에 PS1='[\u@\h] \W \t \$ '을 추가하고 다시 로그인 하면 PS1의 값이 지정된 것을 확인할 수 있다.

만약 다시 로그인하기 귀찮다면 그냥 source ~/.bashrc라고 입력하면 된다.

 

4) 주석

배시에서는 #으로 주석을 표시할 수 있다. 

 

오늘 낯설기도 하고 어려운 내용이 좀 있었다. 하지만, 평소에 여러 프로그램을 설치하면서 설정했던 환경변수의 쓰임 등을 알 수 있어서 너무 좋았다. 

'Linux' 카테고리의 다른 글

[Linux] 10. 프로세스와 잡  (0) 2022.08.23
[Linux] 9. 퍼미션과 슈퍼 사용자  (0) 2022.08.22
[Linux] 7. 텍스트 에디터  (0) 2022.08.13
[Linux] 6. 파일 검색 및 명령어 사용법  (0) 2022.08.13
[Linux] 5. 파일 조작의 기본  (0) 2022.08.12

BELATED ARTICLES

more