2010. 5. 16. 17:25

[로그인 쉘에 따른 초기화 파일]

(Shell) 종류

시스템전역

초기화파일

(로그인쉘)

사용자

초기화 파일

(로그인쉘)

사용자

초기화파일

본쉘(sh)

/etc/profile

$HOME/.profile

    

콘쉘(ksh)

/etc/profile

$HOME/.profile

$HOME/.kshrc

$HOME/.kshrc

C(csh)

/etc/.login

$HOME/.cshrc

$HOME/.login

$HOME/.cshrc

배쉬(bash)

/etc/profile

$HOME/.bash_profile

$HOME/.profile

$HOME/.bashrc

       

(1). 초기화 파일

-로그인쉘 프로그램은 시작된 후에 가장 먼저 /etc/profile 파일을 검사

-파일안의 명령어들을 실행시킨 다음, 초기화 파일인 .profile 사용자의 디렉토리에서 차자 실행.

*초기화에 사용되는 파일들은 /etc/skel 디렉토리에서 확인할수 있다.

(2). /etc/profile

-시스템의 모든 사용자들을 위한 설정파일로 관리자에 의해 관리되는 파일.

-쉘을 쓰는 사용자가 로그인 하는 경우 가장 처음으로 읽혀지는 파일이며 로그인시에 한번 읽혀짐.

(3). ~/.profile

-사용자의 홈디렉토리에 존재하는 .profile 안에는 개인적인 변수 설정

-쉘프롬프트 설정, 터미널 설정등 다양한 개인적인 설정을 있다.

(4). 프롬프트

- 프롬프트의 기본값은 일반사용자는 달러 기호($)이고 root 사용자는 샵기호(#).

- 프롬프트는 PS1 변수로 설정할수 있고 사용자의 홈디렉토리에 존재하는 ~/.profile 정의한다.

# PS1="`uname -n> `"

# export PS1

[참고] 프롬프트 정의

쉘프롬프트: [root@Solaris10:/]#

(ksh ) # PS1=[$LOGNAME@`hostname`:'$PWD]# '

(bash) # PS1='[\u@\h:\w]\$'

(5). 보조 프롬프트

PS2 프롬프트는 보조 프롬프트이다. 프롬프트의 값은 표준 에러에 출력된다. 표준 에러의 기본값

화면이다. 프롬프트는 사용자가 명령어를 제대로 입력하지 않고 캐리지 리턴키를 눌렀을

타난다. 아직 명령어가 완료되지 않았음을 나타내고 명령어의 나머지 부분을 입력하면 정상적으로

행이 가능해 진다.

$ echo "hello

> there"

hello there

(6) 검색 경로

-본셀은 명령행에서 입력된 명령어의 위치를 찾기 위해 변수 PATH 사용한다.

-경로들은 콜론(:)으로 구분하여 나열한다.

-검색은 목록의 왼쪽 디렉토리에서 오른쪽 디렉토리의 순서로 진행된다.

-경로의 마지막에 지정한 마침표(.) 현재 작업 디렉토리를 나타낸다.

-검색경로내에 등록되어 있는 어떤 디렉토리에서도 명령어를 찾지 못하면,

본쉘은 표준 에러로 "filename: not found" 같은 메시지 내보낸다.

-일반사용자는 검색경로 PATH 변수를 ~/.profile 선언하여 사용한다.

(7) hash 명령어

hash 명령어는 명령어의 검색을 효율적으로 처리하기 위해 내부적으로 해시 테이블을 유지한다. 명령

어가 입력될 때마다 경로를 검색하는 대신, 처음 입력되었을 때만 경로를 이용하여 검색하고, 찾아낸

경로를 메모리에 저장한다. 동일한 명령어가 다시 입력되면, 쉘은 명령어를 해시 테이블에서 찾아

낸다. 이러한 과정은 전체 경로를 검색하는 것보다 상당히 빠르게 명령어를 찾을 있도록 도와준

.

hash 명령어의 출력은 쉘이 테이블 내의 명령어를 사용한 빈도수(hits) 명령어를 찾는데 소요되는

상대적인 비용(cost) 두가지이다. 여기서 비용이란 쉘이 명령어를 찾기 위해 검색 경로 상에서 하위

디렉토리로 내려간 단계를 의미한다. hash 명령어에 -r 옵션을 사용하면 테이블을 지운다.

(8) 마침표(.) 명령어

-마침표(.) 쉘의 내부 명령어이다.

- 명령어는 스크립트의 이름을 인자로 받아서 현재 환경에서 실행시킨다.

- 자식 프로세스를 새로 생성하지 않고 스크립트를 실행한다.

-스크립트 내에서 정의된 모든 변수들은 현재 환경의 일부가 되며,

마찬가지로 현재 쉘에서 정의한 모든 변수들도 스크립트 환경의 일부가 된다.

-일반사용자의 환경파일인 .profile 수정후에 재로그인 없이 마침표(.)명령어를 사용하여 적용

'Linux > ShellScript' 카테고리의 다른 글

ANSI Escape(ESC) character  (0) 2010.11.02
쉘내부 명령어  (0) 2010.10.28
[script]directory tree로 보여주기  (0) 2010.05.29
[Script] 파일 점검 프로그램  (0) 2010.05.23
[if연산] test 관련 연산자  (0) 2010.05.23
Posted by devanix