[Linux/리눅스] 리눅스 시스템



1. 리눅스 시작 과정
Power On → System Reset → Login Prompt → ID/PW Input → Shell(bash) → Command → Kernel → Control → Monitor (명령이 끝나면 다시 Shell로 넘어갑니다.)

2. Shell
1) Shell의 의미
shell라는 건 명령어 해석기를 말합니다. 사용자가 입력한 명령어를 해석해서 커널에게 전달하거나 커널이 수행을 완료한 결과를 사용자에게 전달하는 역할을 합니다. 쉽게 말하면 사용자가 명령어를 입력하는 그 환경을 말하는 거죠.
" kernel ↔ Shell ↔ User " shell은 사용자와 커널 사이에 중간 다리 역할을 합니다.

2) Shell의 기능
명령프롬프트로 내부 명령과 외부 명령을 실행해줍니다. 내부 명령은 시스템 내부에서 작동하는 명령들을 의미합니다. 사용자가 직접 명령을 입력하고 하는 것은 외부 명령에 해당되죠.
  • 여러 명령들을 파이프( | )라는 명령어로 연결해서 사용할 수가 있습니다. A 와 B 라는 프로그램이 있다면 파이프로 A와 B를 연결해서 동시에 실행시킬 수 있다는 거죠. (순차적으로 실행시키는 명령어로는 세미콜론 ( ; )도 있습니다.)
  • 리다이렉션이라는 것이 있습니다. 입·출력의 방향을 바꿔주는 걸 의미합니다.
  • 특수문자 해석 및 치환, 명령어를 치환해주고 지역 변수와 환경 변수를 관리합니다.

3) Shell의 Prompt
# echo SHELL
echo는 뒤에 나오는 문자열을 화면에 출력해주는 것을 말합니다. 위의 예시에서는 SHELL 이라는 내용이 화면에 출력되겠네요.
# echo $SHELL
리눅스에서 변수는 변수명 앞에 $를 붙입니다. 그러면 $SHELL는 변수가 되겠죠. 이때는 변수 값을 출력합니다.

3. PATH

PATH 를 보면 여러 경로들이 있습니다. 일단 경로들을 각각 구분시켜주는 게 콜론( : )입니다. '왜 $PATH에 이 경로들이 저장되어 있을까?'가 의문이네요. 결론을 먼저 말하자면 여기에 이러한 경로들이 저장되어 있기 때문에 사용자가 명령어만 입력해서 편하게 사용할 수가 있는 겁니다.

원래는 명령어를 사용할 때 경로를 붙여야 합니다. 왜냐하면 그 명령어에 관한 것들이 어딘가에 저장되어 있을 건데, 어디에 있는지 알려주지 않으면 컴퓨터는 모르니까요. 예를 들어서 shutdown 명령어라면 /sbin/shutdown +10 이렇게 사용해야 합니다. 하지만 이럴 때마다 상당히 귀찮겠죠? 그래서 PATH가 존재하고 여기에 경로를 저장해두면, 경로를 생략하고 명령어를 사용할 수가 있다는 거죠. 그래서 명령창에 그냥 명령어만 입력하면 그 명령어를 PATH에 저장되어 있는 경로에서만 찾아봅니다. PATH에 경로가 저장이 안 되어 있으면 명령어를 못 찾는 거죠.


그러면 예시를 하나 보도록 하죠. PATH 안에 경로를 다 지우고 /home/fedora만 저장한 뒤, shutdown 명령어를 사용해보면 명령어를 찾을 수 없다는 메시지가 뜨게 됩니다.
[PATH 디렉터리 추가]
  • 전체 사용자에게 추가 : /etc/profile 편집
  • 특정 사용자에게 추가 : ~/.bash_profile 편집
  • 현재 로그인에서만 추가 (로그아웃 시 소멸)
  • PATH=$PATH: <추가할 디렉터리>

4. alias
별칭이라고 하는데 간단히 말하자면 명령어를 원하는 이름으로 정해서 사용할 수가 있습니다.
alias cc='clear'
예를 들어서 clear라는 건 화면을 깨끗하게 만들어주는 명령어죠? 위에 있는 명령어는 cc 라는 새 이름을 만들어서, 새 이름으로도 clear 명령어를 사용할 수 있다는 의미입니다. clear, cc 둘 다 쓸 수 있죠. 단, 로그아웃을 하면 사라집니다. 그러면 영구적으로 사용하고 싶다면 홈 디렉터리에 있는 .bashrc 파일에 alias cc='clear' 라고 저장해주면 됩니다.

5. 사용자 환경 설정 파일
  • 사용자별 환경 설정 파일 : .bash_logout, .bash_profile, .bashrc 
  • 모든 사용자 환경설정 파일 : /etc/profile, /etc/bashrc 
  • 원본 파일 /etc/skel/ 존재 
  • .(온점)으로 시작하는 파일은 숨김 파일을 의미합니다.

Comments