리눅스 홈폴더에 있는 것들

Table of Content

.inputrc

Readline 라이브러리는 리눅스에서 interactive한 입력을 처리하기 위한 함수 모음 라이브러리로 Bash뿐만 아니라 다른 어플리케이션에도 활용된다. inputrc는 Readline이라는 라이브러리가 읽는 설정파일이며 이 파일에 설정을 하면 Readline 라이브러리를 이용해 만들어진 모든 어플리케이션의 입력이 영향을 받는다. $INPUTRC 상수를 통해 현재 적용된 설정파일을 오버라이딩 할 수 있다.

키 매핑하기

아래는 init파일 설정을 위한 기본 문법이다.

$if Bash
    set bell-style none
$else
    set bell-style visible
$endif
$include /etc/profile

단축키 매핑해서 ping 체크

아래처럼 입력해두면 터미널이 Bash일 때 CTRL + g 키를 누르면 ping google.com 명령어를 실행한다.

$if Bash
    "\C-g": "ping google.com\n"
    set bell-style none
$endif

.bash_profile

로그인한 사용자의 환경을 커스터마이징 하는 기능을 제공하는 파일로 로그인 쉘에 의해서만 읽힌다. 사용자의 홈폴더에 해당 파일이 없을 경우 쉘은 디폴트 파일로 /etc/profile파일을 읽어 적용한다. .bash_profile 파일이 수정되었을 경우 재로그인을 해야 적용이 된다. export할 환경 변수들이나 명령어, 로그인 전에 수행할 작업들 (쓰레기 비우기라던지)을 적으면 좋다.

Prompting variables : PS0, PS1, PS2, PS3, PS4

prompt는 CLI환경에서 대기모드 상태를 가리키는 말로 대기상태동안 사용자와 호스트 정보를 표시한다. 윈도우는 Primary프롬프트 PS1하나, 리눅스는 PS1~PS4를 가지고 있다.

$PROMPT_COMMAND

쉘 로그인 시 처음 한번 실행하는 커맨드 변수이다.

# .bash_profile
PROMPT_COMMAND="echo $(date +%D\ %T)에 실행!"

위의 예시대로 설정 후 source명령을 실행하거나 재로그인을 해보면 명령어 칠 때마다 아래처럼 출력된다.

Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.13.0-39-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

7 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Sun Apr 17 06:42:55 2022 from 192.168.0.1
04/17/22 06:46:57에 실행!

요약

Name Description
$PROMPT_COMMAND $PS1가 프롬프팅 되기 전에 출력
$PS0 명령어를 친 후 출력
$PS1 기본 프롬프트
$PS2 명령어 길게 치면 라인 브레이크 후 붙는 프롬프트. 디폴트는 >.
Ex.
cmake -D Debug \
> -D TRACE
$PS3 select구문에서 유저의 입력이 필요할 때 입력하기 전 뜨는 프롬프트. 디폴트는 #?
$PS4 set -x로 모드가 사용하는 프롬프트로 디버깅을 위한 trace가 표시된다.

.bash_logout

로그아웃 할 때 읽히는 파일로 사용자가 로그아웃 실행할 명령어를 정의할 수 있다. 기본적으로는 화면을 클리어 시킨다.

.bashrc

bash의 startup 파일로 쉘이 실행될 때 사용자별로 읽힌다. 디폴트 파일은 /etc/bash.bashrc이다. 환경변수나 shopt로 설정할 옵션들을 넣는 것이 좋다.

$CDPATH

cd명령어가 이동할 때 참고하는 경로에 대한 환경변수로 기본적으로 빈 문자열이다. 빈문자열이 의미하는 바는 현재 디렉토리이고 구분자로는 :을 쓴다. 아래와 같이 사용자가 직접 설정할 수 있다.

export CDPATH=:$HOME/Projects/

만일 ~/Projects/경로에만 존재하는 very-special-name-dir라는 이름의 폴더가 있다고 한다면 cd 명령어가 현재 디렉토리 검색 후 바로 CDPATH변수에 지정된 경로를 탐색하기 때문에 해당 폴더를 자동완성으로 바로 갈 수 있다. 자주 가는 폴더를 즐겨찾기처럼 등록해놓으면 편하다.

cdable_vars 옵션 켜는 방법도 있다.

아래와 같이 shoptcdable_vars옵션을 키면 cd명령어 뒤에 따라오는 인자가 디렉토리가 아닌 경우 경로가 아닌 변수로 간주하여 해당 변수가 가리키는 위치로 이동한다.

shopt -s cdable_vars
projh=~/Projects
cd projh

Misc

  • cd - 명령어는 $OLDPWD 변수로 이동을 의미한다.
  • $SECONDS는 쉘이 실행된 시점(로그인한 시점)부터 흐른 시간을 나타낸다. unset하면 특수한 의미를 잃어버리므로 다시 설정해도 소용없기 때문에 건들지 않는 것이 바람직하다.

Terminal type

TERM 변수에는 사용하고 있는 터미널의 종류를 알려준다. X window 시스템이 사용되고 있는 경우 xterm의 값을 TERM에 자동으로 세팅하여 주지만 그래픽 환경이 아닌 경우는 하드웨어 단말에 따라 다르다. 스크립트를 짤 때는 TERM변수를 유의하여 짜는 것이 좋다.

예를 들어 특정 하드웨어 터미널은 최대 127가지 컬러만 지원하는데 256(8bit) 컬러 코드 문자를 입력한다던지 하는 경우

ls -alhR /usr/lib/terminfo
echo $TERM

Misc

그래픽 터미널은 화면에 그림을 보여줄 수 있는 단말기를 의미한다. 경로를 저장하는 벡터 방식과 격자 단위로 그림을 출력하는 래스터 방식이 있다. 현대에는 연산은 호스트가 하고 클라이언트는 그래픽 단말기를 통해 GUI인터페이스만 제공 받는 씬 클라이언트로 발전하였다. Thin client 의 종류에는 윈도우의 원격접속 프로토콜이자 방식인 RDP, 유닉스의 X11이 있다.

반의어로는 Thick client가 있다. Thick client는 연산과 그래픽 인터페이스를 모두 제공하여 서버와 독립적으로 자동하면서도 기능이 많은 구조나 컴퓨터를 말한다. 대표적인 예가 개인용 데스크탑이다.

참고문헌

WIKI - Thin client

PS0~PS4에 대한 설명

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.