Information Security

08-2 쉘 환경 변수 본문

Linux

08-2 쉘 환경 변수

leeeeye321 2017. 9. 19. 02:18

쉘 환경 변수

-쉘 환경 변수에는 쉘 변수와 환경 변수가 있다.

 

1. 쉘 변수(지역 환경 변수)

-현재 사용하는 쉘에서만 적용되는 변수

 

변수 선언 및 초기화  #변수명=값

※주의 사항 변수 선언할 때 "변수명 = 값" 이렇게 공백이 있으면 안된다.

 C언어처럼 띄어 쓰지 말고 "변수명=값" 이렇게 붙여 써야 한다.

A = 10(X)

A=10(O)

 

변수 해제 #unset 변수명

변수 선언 확인 #set

 

변수 선언

 

#echo $변수명

-변수안에 들어간 값이 출력된다.

 

* 이동(cd)할 때 변수 사용하기

경로를 변수에 저장

 

 이동할 때 변수 사용하기

 

경로 확인

 

*서브 쉘에서의 쉘(지역 환경) 변수

쉘 변수 LOCAL 선언 및 test 대입

 

...

...

 

 set 명령어를 실행하면 변수 목록이 출력된다.

너무 많다.

내가 선언한 LOCAL 변수가 어디있는지 모르겠다.

 

이럴 땐 파이프를 사용하여 set 출력 결과 중 "LOCAL"을 찾는다.

 

-서브 쉘을 생성

-화면에는 아무런 변화가 없지만 서브 쉘이 실행되었다.

 

-출력 결과가 없다.

-로그인 쉘에서 선언한 쉘 변수(지역 환경 변수)는 지역적 특성으로 인해 서브 쉘에서 사용할 수 없다.

 

-서브 쉘을 종료

-로그인 쉘로 돌아옴

 

-LOCAL 변수 해제

-출력 결과 없음

 

2. 환경 변수(전역 환경 변수)

-로그인 쉘과 서브 쉘에서 사용할 수 있는 변수

 

변수 선언 및 초기화 #export 변수명=값

 

변수 해제 #unset 변수명

 

변수 선언 확인 #env 

 

-환경 변수 선언 및 test 대입

-로그인 쉘에서의 변수 값 확인

 

-서브 쉘을 다시 실행해서

변수의 값을 확인한다. 쉘 변수와 다르게 값이 출력된다.

로그인 쉘과 서브 쉘의 값이 동일하다.

 


 

쉘 스크립트(Shell Script) 

-스크립트 파일은 해당 파일이 스크립트 임을 알리기 위하여 확장자 .sh를 붙인다.

 

스크립트 파일 편집

 

#! : 어떤 쉘로 실행할지 정한다.

-bash 쉘을 이용하여 해당 스크립트를 실행한다.

 

#sh [스크립트명].sh

 -스크립트 실행

-스크립트 파일의 명령어들이 순차적으로 실행된다.

 

*시스템에 미리 선언(예약)되어 있는 환경 변수의 종류

 

히스토리 파일에 저장되는 명령어의 수 1000개

 

-히스토리 파일의 경로

-이때까지 사용한 명령어가 기록되어 있다.

 

호스트 네임 정보

 

프롬프트 구조 정보

 

PS1의 값을 변경하면 프롬프트를 원하는 대로 바꿀 수 있다.

 

 

※ 프롬프트 변경하기

http://bashrcgenerator.com/

-자신이 직접 프롬프트를 만들 수 있는 사이트이다.

 

-1번의 요소들을 2번에 드래그해서 원하는 대로 배치한다.

-요소를 더블클릭하면 색도 지정할 수 있다.

 

이 프롬프트를 계속 사용하려면 3번, 4번의 값을 기억해둬야 한다.

 

4번의 값을 그대로 복사하여 Xshell에 붙여넣으면 변수 PS1의 값을 변경하여 프롬프트가 변경된다.

 

*PATH 변수

PATH 변수는 실행 파일(명령어)이 위치한 경로를 값으로 가진다.

 

-ls 실행 파일을 /root/1234 파일로 복사

 

 

-ls와 1234는 똑같은 내용을 가진 파일인데 ls는 실행되고 1234는 실행되지 않는다.

-command not found : 명령어를 찾을 수 없다.

 

1234도 ls와 같이 명령어로 사용하기 위해

1234 명령이 위치한 경로(/root)를 PATH 변수에 추가해준다.

 

경로가 추가된 것 확인

 

-이제 1234를 다시 입력해본다.

★ls 명령어와 같은 실행 결과가 출력된다.

 

*로그인 시 실행되는 스크립트의 종류

1. /etc/profile -> /etc/profile.d/*(해당 디렉터리 내에 위치한 모든 스크립트)

2. ~/.bash_profile

3. ~/.bashrc

4. /etc/bashrc

 

시스템의 모든 사용자에게 적용할 설정이 있는 파일 : /etc/profile, /etc/bashrc

해당 사용자에게만 적용할 설정이 있는 파일 : ~/.bash_profile, ~/.bashrc

 

실습 1) root 계정으로 로그인 시 아래 조건을 만족하는 설정이 되도록 파일을 편집하세요.

1. vi 명령어 사용 시 vim으로 동작하도록 alias 설정

2. grep 명령어 사용 시 grep --color=auto 옵션이 적용 되도록 alias 설정

3. 프롬프트 구조가 항상 유지 되도록 설정

 

풀이- 해당 사용자에게만 적용: ~/.bash_profile, ~/.bashrc 중 하나를 vim으로 편집

 

vim으로 ~/.bashrc를 편집

 

위의 빨간 네모 안의 내용을 추가하고 저장한다.

 

로그인 시 실행되는 스크립트이므로 다시 로그인한다.

 

조건 세가지가 모두 적용된 것을 확인할 수 있다.

 

실습 2) root 계정이 사용했던 명령어 기록을 로그인 시 모두 삭제 되도록 설정

(#history의 출력 결과가 없도록 설정)

 

이번엔 ~/.bash_profile을 편집해보겠습니다.

 

-파일에 cat /dev/null > $HISTFILE 이나 cat /dev/null > /root/.bash_history를 추가해준다. 

-출력 결과가 아무것도 없는 파일 /dev/null을 HISTFILE 변수의 값으로 준다.(출력 리다이렉션)

-출력 리다이렉션은 기존에 파일이 있다면 출력의 결과로 덮어 씌운다.

즉, 파일안의 내용을 모두 삭제한다.

 

.bash_history 내용이 모두 삭제되고, 로그인 시 해당 파일에 저장되어 있는 내용으로 history 명령어의 결과가 내용이 나오므로

해당 파일에 내용이 없으면 history 명령어의 결과도 없다.

 

-로그인할 때마다 이 스크립트를 읽으므로, 로그인할 때마다 HISTFILE 변수가 초기화되어 history 결과도 초기화될 것이다.

 

다시 로그인하고 history 명령어를 실행하여 기록이 모두 삭제된 것을 확인할 수 있다.

 

~/.bash_logout 로그아웃 시 실행되는 스크립트이다.

 

*vim 실행 시 자동으로 실행되는 스크립트 경로

/etc/vimrc : 모든 사용자에게 적용되는 스크립트

~/.vimrc : 해당 사용자에게만 적용되는 스크립트(생성 해야한다.)

 

실습) root 계정이 vim 명령어 사용 시 자동으로 행 번호를 출력하도록 설정

 

스크립트 생성

 

행 번호 출력 명령어 입력

 

...

vim 실행 시 자동으로 행 번호가 출력된다.

'Linux' 카테고리의 다른 글

09-2 사용자 계정 관리 명령어(user)  (0) 2017.09.21
09-1 사용자 계정 관리  (0) 2017.09.20
08-1 Redirection & Pipe  (0) 2017.09.19
07-2 리다이렉션(Redirection)  (0) 2017.09.18
07-1 vi(m) editor  (0) 2017.09.16