본문

솔라리스 콘쉘 프롬프트를 도스처럼 사용하기


[그림 1, 2] ksh 프롬프트와 cmd 프롬프트

도스 프롬프트는 c:\Documents and Settings\na 처럼 현재 작업 디렉토리를 출력합니다. 하지만 솔라리스의 기본 프롬프트는 단순히 #(bash), >(tc) 아니면 $(ksh), 등으로만 나타나기 때문에 pwd를 쳐야하는 번거로움을 안겨줍니다. 하지만 이를 극복하기 위한 방법들이 있으며 그중 하나로 콘셸에서는 다음의 디폴트 변수를 사용할 수 있습니다
 
  • EDITOR : 셸을 위한 디폴트 에디터를 정의합니다
  • FCEDIT : fc명령을 위한 에디터를 정의합니다.(이전에 실행한 명령어를 다시 불러오는)
  • HOME : cd 명령을 인자없이 사용하였을 경우 갈 디렉토리를 지정합니다.
  • LOGNAME : 사용자의 로그인 이름을 정합니다.
  • PATH : 셸이 명령을 수행해야 할 때 실행파일을 찾을 디렉토리들을 콜론으로 구분지어 사용합니다.
  • PS1 : 프라이머리 콘셸 프롬프트를 지정합니다.(기본은 $)
  • PS2 : 세컨더리 콘셸 프롬프트를 지정합니다.(기본은 >)
  • SHELL : 셸의 이름을 지정합니다.

셸 프롬프트를 지정하는 변수로 PS1, PS2가 있으며. 여기서는 PS1를 변경하면 됩니다. 출력되는 프롬프트 부분은 echo "$PS1" 으로 표현할 수 있겠습니다. 만약 PS1=`pwd`라고 치게 된다면 어떻게 될까요, "pwd의 결과" 값이 PS1에 저장되게 됩니다. 이런 경우, cd로 디렉토리를 바꿔도 "pwd의 결과가 값으로 저장된 것"을 불러오기 때문에, 출력은 변하지 않게 됩니다. 또, PS1=$PWD라고 치게 되더라도 마찬가지 결과가 나오게 됩니다. 그럼 과연 어떻게 해야 할까요?

답은 ' '에 있습니다. PS1='$PWD'로 치면 '는 내부의 메타문자를 인식하지 않고 일반 문자로 저장하게 됩니다. 만약 메모리를 뜯어서 본다면, PS1은 $PWD 라는 문자를 저장하고 있을것입니다. 이제 프롬프트 부분을 봅시다. echo "$PWD"는 결국 pwd의 결과를 출력하고, cd를 바꾸면 그에 맞춰서 pwd의 결과를 출력 할 수 있을겁니다. dos와 똑같은 형태를 출력하기 위해 PS1='$PWD>' 로 지정해주면 [그림 2]와같이 출력이 됩니다.

여기에 추가로, 도스에는 유용하게 쓰이는 기능인, 화살표 위 아래키를 누르면 지난 명령의 목록이 뜨는 기능 또한 추가해 보겠습니다. 이것 역시 콘셸 기본 변수를 조작하면 비스무리 하게 할 수 있습니다. 화살표키를 사용할 수 없기 떄문입니다. 대신 vi에서 하던것처럼 j키와(아래로), k키(위로), l(오른쪽), h(왼쪽)를 누르시면 됩니다. 이것 역시 간단합니다. export EDITOR=/bin/vi를 입력하시거나. 혹은 export VISUAL=/bin/vi 또는 더 짧게, set -o vi 를 입력하시면 됩니다.

그리고 또하나, dos에서 쓰이던 dir이 그리우신 분들을 위해 alias가 존재합니다. 긴 명령이거나 외우기 어려운 명령, 그리고 옵션이 필요한 경우에 사용자가 원하는 명령어로 대치시켜주는 역할을 합니다 $ alias 하시면 grep, hlstory 등, 많은것들이 뜨게 될것입니다. 만약에 alias가 없었더라면 passwd 파일에서 루트유저의 정보를 보고싶을 때, cat /etc/passwd | /usr/bin/grep root 라고 쳐야 했을 것입니다. 

도스에서 dir을 하면 아래 화면처럼 뜨게 됩니다. 솔라리스의 ls -l과 상당히 흡사하므로, ls -l을 dir라고 별명을 붙여줍시다(alias). 별명 붙이기도 쉽습니다. alias dir="ls -l"이라고 주시면 됩니다 앞으로 dir을 부르면 ls -l이 실행됩니다. 만약 이 설정을 취소하고자 한다면 unalias dir 하시면 바로 삭제됩니다.

 

[그림 3, 4] 각 운영체제에서의 dir 명령

 
=============
오늘도 새 글을 쓸 시간이 없어 글을 이동해왔다. 옛날 블로그 글들을 보면 뭐 이런 잡스러운걸 적어놨나.. 해서 은근 가져오기가 까다롭다, 물론 그때에 비해서 지식의 깊이나 폭이 넓어져서 그렇겠지만, 기존 게시물을 내가 현재 아는것과 함께 보완해서 적으려고 하면, 이걸 어느정도 깊이로 써야 할까 하는것도 고민하게 된다. 아직 고수로의 길은 멀기에, 만족하는 깊이만큼 쓰려면 그만큼 더욱 공부해야 하는데 그러기도 여의치 않기 때문이다. 그렇다고 막 쓰자니 글을 쓰는 의미가 없고. (그래서 오늘글은 의미없는 글?)

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.