Information Security
08-2 쉘 환경 변수 본문
쉘 환경 변수
-쉘 환경 변수에는 쉘 변수와 환경 변수가 있다.
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의 값을 변경하면 프롬프트를 원하는 대로 바꿀 수 있다.
※ 프롬프트 변경하기
-자신이 직접 프롬프트를 만들 수 있는 사이트이다.
-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 |