728x90
반응형
더보기
zsh란?
- zsh(Z shell)는 유닉스 계열(macOS/Linux)에서 많이 쓰는 커맨드 라인 셸(shell) 이다.
- 사용자가 입력한 명령어를 해석해서 실행해주고, 히스토리/자동완성/환경변수/alias 같은 기능을 제공한다.
- macOS는 최근 버전에서 기본 셸이 bash에서 zsh로 변경되었고, 그래서 Mac 환경에서 zsh 기반 설정을 많이 한다.
대표적인 셸 종류는 무엇인지?
셸(shell)은 흔히 아래 종류들을 만난다.
- sh: 전통적인 유닉스 셸(표준의 기반)
- bash: Linux에서 가장 흔한 셸
- zsh: macOS 기본 셸로 많이 사용(완성/확장 기능이 풍부)
- fish: 사용성 중심(설정 쉬움, 자동완성 강함)
- ksh: Korn shell(전통/기업 환경에서 가끔)
- PowerShell: Windows 대표 셸(객체 기반 파이프라인)
- cmd.exe: Windows의 레거시 커맨드 인터프리터
OS마다 기본적으로 제공되는 셸이 다를 뿐이고, 대부분 원하는 셸을 설치해서 변경/사용할 수 있다(Windows에서도 WSL이면 bash/zsh 사용 가능).
쿠버네티스 CLI를 쓰다보면 kubectl get pod <Tab>에서 Pod 이름이 자동완성되거나,
kubectl get <Tab><Tab>에서 리소스 후보 목록이 뜨는 기능이 있으면 작업 속도가 확 올라간다.
이 기능이 바로 completion(자동완성) 이고, zsh에서는 kubectl이 제공하는 completion 스크립트를 로드해서 사용할 수 있다.
completion이 뭔가?
completion은 터미널에서 명령어를 입력할 때 Tab 키로 가능한 후보를 자동으로 채워주거나 목록을 보여주는 기능이다.
kubectl completion이 켜지면 아래 같은 것들이 편해진다.
- kubectl get <Tab><Tab> → pods, svc, deploy 등 후보 목록 표시
- kubectl get pod <Tab> → Pod 이름 자동완성
- kubectl -n <Tab> 또는 kubectl get pod -n <Tab> → namespace 후보
- 다양한 옵션(--context, --namespace, -o 등) 후보 탑색
참고: kubectl get po 에서 po가 pod로 "자동 변환"되는 걸 기대할 수 있는데,
po는 이미 kubectl의 shortname(약어)로 유효한 입력이라 "굳이 풀어서 바꾸지 않는 경우"가 많다.
대신 pod 이름, namespace, 옵션 자동완성이 동작하는지가 핵심이다.
zsh에서 kubectl completion 설정 방법
1) ~/.zshrc에 아래 내용 추가
# --- zsh completion 초기화 ---
autoload -Uz compinit
compinit
# --- kubectl completion ---
source <(kubectl completion zsh)
# (선택) k alias도 completion 적용
alias k=kubectl
compdef k=kubectl
2) 적용 (터미널 재시작 대신 바로 적용)
source ~/.zshrc
3) 동작 확인
kubectl get <TAB><TAB> # 리소스 목록이 뜨는지
kubectl get pod <TAB> # pod 이름이 자동완성 되는지
kubectl -n <TAB> # namespace 후보가 뜨는지
자주 헷갈리는 포인트
Tab을 눌렀는데 "자동으로 안 채워지고" 아무 반응이 없어요
- completion이 아예 꺼져있거나(compinit 미실행)
- 설정이 적용되지 않았거나(source ~/.zshrc 미실행)
- 플러그인/기존 설정과 충돌 가능성이 있다.
간단 점검
echo $SHELL
type compinit
type kubectl
결론
kubectl completion을 켜두면 리소스/옵션/Pod 이름 탐색이 쉬워져서,
실습(특히 CKA)이나 운영 환경에서도 타이핑 실수를 줄이고 속도를 올릴 수 있다.
728x90
반응형
'CKA' 카테고리의 다른 글
| [k8s] Secret 정리 (ConfigMap 차이) (0) | 2026.02.20 |
|---|---|
| [k8s] ConfigMap 정리(Env/Volume 주입, 변경 반영, 실습 포인트) (0) | 2026.02.17 |
| [k8s] namespace 구분 (0) | 2026.02.15 |
| [k8s] 컨텍스트(context)에 대해 알아보자 (0) | 2026.02.15 |
| [k8s] kind(Kubernetes IN Docker) (0) | 2026.02.13 |