공부/Linux

14. 쉘특성

김대욱대욱 2018. 3. 19. 14:27

 ▷ 특수변수

  - $ : 현재쉘의 PID를 저장하고 있다. 쉘 스크립트내에서 임시 파일의 이름을 지정할 때 보통 사용이 된다.

# echo $$        /* 현재쉘의 PID가 출력된다. */

  - ? : 바로 이전 명령어의 정상 실행 여부에 대한 결과값이 들어 있다. 쉘 스크립트내에서 이전 명령어의 정상 수행 여부를 확인할 때 주로 사용된다.

  

 

  - ! : 바로 이전에 백그라운드로 실행한 프로세스의 PID번호가 저장된다.

# echo $!        /* 바로 이전에 백그라운드로 실행한 프로세스의 PID 번호가 출력된다. */

 ▷ 인자변수

  - $로 표시하여 인자변수의 값이 몇 번째인지 나타낼 수 있다.

# vi test.sh

#!/bin/bash


echo $1        /* 첫번째 인자 */

echo $2        /* 두번째 인자 */

echo $3        /* 세번째 인자 */


 ▷ PATH 변수

  - 명령어를 검색할 디렉토리를 선언할 때 사용한다.


↓ vi ~/.bash_profile



5. 메타캐릭터(Metacharcter)

  - ' ' (작은 따옴표) : 쉘이 해석 할 수 없도록 막아 준다.

  - " " (큰 따옴표) : 쉘이 해석 할 수 없도록 막아 준다. 단 인식되는 문자($, ``, \)들도 있다.

  - ` ` (역 따옴표) : 쉘이 해석할 때 명령어로 인식한다. 따라서 역 따옴표 안의 내용을 실행한다. 

  - \ (역 슬래쉬) : 바로 이후에 있는 문자를 쉘이 해석 할 수 없도록 막아 준다.

  - ; (세미콜론) : 한개의 라인에 여러개 명령어를 수행할 때 사용한다.


6. 히스토리(History)

 ▷history CMD

  - 사용자가 로그인 하게 되면 사용자의 명령어를 저장하기 위해서 Stack 공간이 할당된다. 기본값은 1000개의 명령어를 저장할 수 있는 공간이 할당된다.

  - 명령어 형식

# history | less        /* 현재까지 사용한 스택에 들어간 명령이 처음부터 출력  */

# history -c            /* (clear) 현재까지 사용한 명령을 삭제 */

# history                /* 현재까지 사용한 스택에 들어간 명령이 출력 */


 ▷alias

  - 별칭지정 명령어라고 하며, 복잡한 명령어와 옵션을 간단히 입력할 수 있는 문자열로 치환 하는 명령어다.

  - 명령어 형식

# alias cp='cp -i'        /* cp명령어를 사용하면 cp -i 로 명령이 실행된다. */

# unalias cp             /* 치환된 명령어를 해제한다. */


7. 환경 파일(Environment File)

 ▷ 사용자 환경파일

  - 리눅스에서 로그인 할 때, 쉘이 실행 될 때, 로그아웃 할 때 실행되는 파일이다.

  - 환경 파일이 읽혀지는 순서

로그인 할 때 마다  읽혀지는 환경 파일 → 쉘이 실행 될 때 마다 읽혀지는 환경 파일 → 로그아웃 할 때 마다 읽혀지는 환경 파일

   ① 로그인 할 때 마다 읽혀지는 환경 파일

■ /etc/profile

■ /etc/profile.d/*.sh

■ ~/.bash_profile

■ ~/.bashrc

■ /etc/bashrc

   ② 쉘이 실행 될 때 마다 읽혀지는 환경 파일

■ ~/.bashrc

■ /etc/bashrc

■ /etc/profile.d/*sh

   ③ 로그아웃 할 때 마다 읽혀지는 파일 

■ ~/.bash_logout

  - 사용자 환경 초기값 설정

   ① 관리자가 일반 사용자의 환경을 설정 시켜 주는 경우

■ /etc/profile          /* 로그인 할 때만 읽혀진 */

■ /etc/bashrc         /* 쉘이 실행 될 때 마다 읽혀짐 */

/etc/profile.d/*.sh  /* 쉘이 실행 될 때 마다 읽혀짐 */

   ② 일반 사용자가 자신의 환경을 설정하는 경우

■ ~/.bash_profile     /* 로그인 할 때만 읽혀짐 */

■ ~/.bashrc           /* 쉘이 실행 될 때 마다 읽혀짐 */

  - 환경파일 분석

   ① /etc/profile

   ② /etc/profile.d

   ③ $HOME/.bash_profile

   ④ $HOME/bashrc

   ⑤ /etc/bashrc

   ⑥ $HOME/.bash_logout