hello

Bash PS1 프롬프트 설정 상세 해설

Linux 환경에서 터미널의 프롬프트는 PS1 변수로 제어된다.
제공된 코드는 color_prompt에 따라 색상 적용 여부가 달라지는 동적 프롬프트 구성을 보여준다.
아래는 코드와 함께 각 요소의 의미를 풍부하게 분석한 내용이다.


📌 전체 코드

if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u@\w\$ '
fi

🟩 1. 색상이 적용되는 경우 (color_prompt = yes)

✔️ 사용되는 PS1

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

🧩 구성 요소 해설

요소 의미
${debian_chroot:+($debian_chroot)} chroot 환경일 경우 (chroot명)을 표시
\[\033[01;32m\] 밝은 녹색 시작(ANSI 컬러 코드)
\u 현재 사용자 이름
@ 구분자
\[\033[00m\] 색상 초기화
: 구분자
\[\033[01;34m\] 밝은 파란색 시작
\w 현재 작업 디렉토리 경로 (상대/압축 표기)
\[\033[00m\] 색상 초기화
\$ 일반 유저는 $, root는 # 표시

🎨 색상 설명 (ANSI 코드 요약)

코드 색상
\033[01;32m 밝은 초록색
\033[01;34m 밝은 파란색
\033[00m 리셋

이 프롬프트 구성은 다음과 같은 형태로 표시된다:

username:/현재경로$
  • username초록색
  • 경로(w)파란색

주의: 원본에서는 \u@\h(사용자@호스트)였으나, 현재 설정에서는 호스트명을 제거해 \u@만 출력한다.


🟦 2. 색상이 적용되지 않는 경우 (color_prompt != yes)

✔️ 사용되는 PS1

PS1='${debian_chroot:+($debian_chroot)}\u@\w\$ '

🧩 구성 요소 해설

요소 의미
${debian_chroot:+($debian_chroot)} chroot 환경 표시
\u 사용자명
@ 구분자
\w 현재 디렉터리
\$ 권한에 따라 $ 또는 # 출력

📌 출력 예시

user:/home/user$

🛠 왜 주석 처리된 원본과 다르게 수정된 걸까?

원래 배포본의 일반 PS1은 다음 형태였다:

원본 컬러 버전

\u@\h:\w$

수정 버전에서 달라진 점은:

원본 수정본 차이
\u@\h \u@ 호스트명 제거
디렉터리 앞에 : 그대로 유지 동일
색상 코드 일부 수정 색상은 유지되나 호스트명 색이 사라짐

👉 이유(추정)

  • 프롬프트가 너무 길어지는 것을 방지하려는 목적
  • SSH 접속이 많지 않은 환경에서는 호스트 표시가 불필요
  • 깔끔하고 짧은 프롬프트 선호

🪄 PS1 커스터마이징 팁

🌈 (1) 프롬프트에 Git branch 표시하기

PS1='\u@\w$(git branch 2>/dev/null | grep "*" | sed "s/*/ (/;s/$/)/")\$ '

🕒 (2) 프롬프트 앞에 시간 표시

PS1='[\t] \u@\w\$ '

💻 (3) 완전 minimal 스타일

PS1='\w\$ '

🔚 요약

  • color_prompt=yes일 때 ANSI 컬러 코드가 적용된 컬러 프롬프트 사용
  • \u, \w, \h, \$ 등 Bash PS1 특수 문자로 사용자·디렉터리·호스트 정보 표시
  • 수정본은 **호스트명(h)**을 제거하여 더 단순한 형태로 구성
  • 색상 없는 버전에서도 기본 데이터(사용자, 경로)는 동일하게 출력
  • PS1은 사용자가 원하는 대로 자유롭게 확장·커스터마이징 가능

Read more

TCP 공부하기

TCP(전송 제어 프로토콜) 개요 TCP는 불안정한 네트워크 환경에서도 신뢰성 있고 순서가 보장된 데이터 전송을 가능하게 하는 핵심 인터넷 프로토콜이다. IP가 호스트 간 패킷 전달만을 담당한다면, TCP는 포트 기반 프로세스 간 통신, 오류 복구, 재전송, 순서 제어를 제공한다. 흐름 제어와 혼잡 제어를 통해 TCP는 수신 버퍼와 네트워크 대역폭의 고갈을 방지한다.

By JHL

우리가 알던 고전적 소프트웨어 엔지니어링은 죽었다

Product Engineering 시대와 AI 개발 패러다임 변화 1. 패러다임 변화: 코드 작성의 목적이 달라졌다 1972년 Dennis Ritchie가 C 언어를 발표한 이후, 소프트웨어 산업은 오랫동안 다음 요소에 집중해 왔다. * 코드 효율성 (시간·공간 복잡도) * 코드 길이 및 생산성 * 가독성과 유지보수성 그러나 AI 시대가 시작되면서 기존 패러다임이 근본적으로 변하고 있음. John Carmack은

By JHL

GitLab에서 제작한 GitOps 초보자 가이드

소개 소프트웨어 애플리케이션의 복잡도가 증가함에 따라 인프라에 대한 요구도도 함께 증가하고 있습니다. 인프라 팀은 다양한 서비스를 빠르고 안정적으로 제공해야 하지만, 인프라 구축은 여전히 수동 프로세스에 의존하는 경우가 많습니다. 이 문제를 해결하기 위한 핵심 접근 방식이 인프라 자동화이며, 그중 하나가 GitOps입니다. 1. 인프라 자동화의 필요성 * 애플리케이션 개발은 CI/CD로 자동화되었지만 인프라

By JHL