본문 바로가기

정보보안

📖 리눅스 내부 명령어- Shell Builtin 명령어 정리 ( By chat GPT)

728x90

▣ 리눅스 내부 명령어- Shell Builtin 명령어 정리 ( By chat GPT)

 

 

 

 

리눅스를 공부하면서 쉽게 이해하는 방법이, 잘 알고 있는 윈도우(Windows)나 도스(DOS)와 비교해서 이해하면 이해가 좀 더 쉬운 것 같습니다.

 MS계열 OS의 경우 내부명령어는 COMMAND.COM 에 포함되어 있어서 부팅 시 로딩되어 메모리에 올라가면, 경로에 상관없이 실행파일이 없어도 사용자가 편리하게 명령어를 손쉽게 사용할 수 있도록 해 주는 유익한 것이 내부명령어 입니다.

 

리눅스에도 이러한 내부명령어가 역시 존재하고 어떠한 명령어들이 있는지를 알아보았습니다.

이번에도 챗GPT가 잘 정리해 주었습니다.

 

리눅스에서는 이러한 내부명령어를 셀빌트인(Shell Builtin) 명령어 라고 부릅니다.

 

 

아래 표는 Bash(가장 널리 쓰이는 리눅스 셸) 기준으로 자주 활용되는 Shell Builtin 명령어를 정리한 것입니다. 

 

간단한 사용 예와 함께 어떤 상황에서 쓰이는지도 덧붙였으니 참고하세요. (By Chat GPT)

 

구분   Built‑in 핵심 용도 기본 사용법 / 예시  비고·사용 팁
디렉터리·경로 cd 작업 디렉터리 변경 cd /var/logcd - (이전 폴더) 셸 내부 상태이므로 builtin이어야 함
pwd 현재 디렉터리 출력 pwd echo $PWD와 동일 효과
환경/변수 export 환경변수 등록 export PATH=$PATH:/opt/bin 자식 프로세스에 전파
unset 변수·함수·배열 삭제 unset MYVAR -f 함수 삭제, -v 변수 삭제
readonly 값 고정 readonly LANG 수정/삭제 방지
프로세스·작업 jobs 백그라운드 작업 목록 jobs -l %1, %+ 같은 작업 제어 기호와 함께
fg / bg 포그라운드·백그라운드 전환 fg %1, bg %1 Ctrl+Z 일시정지 후 활용
kill 신호 보내기 kill -9 1234 /bin/kill 외부도 동일 이름 존재
입출력 echo 문자열·변수 출력 echo "$HOME" -e로 특수문자 해석
read 표준입력 읽기 read name && echo "Hi $name" -p 프롬프트, -s 비밀번호 입력 숨김
printf 서식 지정 출력 printf "%04d\n" 7 C의 printf와 거의 동일
흐름 제어 if/then/fi 조건 분기 if [[ -f file ]]; then … fi Bash 키워드(내장)
case 패턴 매칭 분기 case $var in pat1) … ;; esac  
for while 반복 루프 for f in *.txt; do …; done  
break / continue 루프 탈출·건너뛰기 break 2 (2중 루프 탈출)  
산술·논리 let 산술 연산 let i++ (( i++ )) 구문이 더 현대적
test / [ ] 조건 평가 [ -d /etc ] && echo dir [[ … ]] (Bash 확장)가 더 안전
: (콜론) null 명령(무동작) : ${var:=default} 자리 채우기·NOP
셸 설정·제어 alias / unalias 명령 별칭 alias ll='ls -l' alias만 입력하면 목록
history 명령 기록 조회 `history grep ssh`
type / command 명령 종류 확인 type cd → builtin command ls : alias 무시
shopt Bash 옵션 토글 shopt -s globstar 패턴 확장, autocd 등
set / unset -o 셸 옵션 설정 set -o noclobber set -x 디버깅(trace)
source / . 스크립트 현재 셸에서 실행 source ~/.bashrc 하위 셸 생성 안 함
종료 exit 셸 종료, 상태값 반환 exit 0 $?로 직전 명령 종료코드 확인
logout 로그인 셸 종료 logout GUI 터미널이 아닌 로그인 셸에서

 

 

✅ 사용 팁 & 학습 포인트

  1. type <명령> 으로 builtin 여부를 빠르게 판별하세요.
  2. 성능: 빈번히 호출되는 echo, printf, cd 등이 builtin이라서 별도 프로세스 생성 비용이 없습니다.
  3. 셸 상태 변경(디렉터리, 변수, 옵션)은 반드시 builtin이어야 합니다. 외부 프로그램은 부모 셸을 바꿀 수 없습니다.
  4. help <builtin> 으로 Bash 내장 매뉴얼(맨페이지보다 더 간략)을 볼 수 있습니다. 예) help read.
  5. 일부 명령(kill, printf)은 동일 이름 외부 명령도 존재하므로, alias·PATH 순서에 따라 호출 대상이 달라질 수 있습니다.
  6. 필요 시 command kill …처럼 외부 버전을 강제로 호출하세요.

 

🔍 리눅스에도 내부명령어가 있는지에 대한 질문에 대한 Chat GPT의 답변

 

리눅스에도 DOS 시절의 “내부 명령어(Internal Command)”에 해당하는 기능이 있습니다.
다만 DOS · Windows CMD에서 쓰이던 표현 대신 **“셸 내장 명령어(shell builtin)”**라고 부르는 것이 일반적입니다.

개념 DOS / CMD 리눅스(Bash 등) 공통점

이름 Internal command Shell builtin 셸 프로그램 자체에 포함됨
위치 COMMAND.COM 또는 cmd.exe 코드 내부 bash, zsh, fish 등의 셸 바이너리 내부 디스크의 별도 실행 파일 없이 동작
예시 DIR, CD, COPY, DEL, CLS, SET cd, echo, alias, export, read, ulimit, history, pwd, test 프로세스를 새로 만들지 않고 즉시 실행

 

✅ 셸 내장 명령어가 필요한 이유

  1. 프로세스 생성 비용 절감 – 파일 하나를 지우려고 매번 새로운 프로세스를 만들면 느리므로, 자주 쓰는 명령은 셸이 직접 처리합니다.
  2. 셸 내부 상태 변경 – cd, export처럼 “현재 작업 디렉터리”나 환경 변수 등 셸 자신의 상태를 바꾸는 명령은 외부 프로그램으로 만들 수 없습니다.
  3. 스크립트 편의 – 조건 분기(test 또는 [[ ... ]]), 산술 연산(let, (( ... ))) 같은 구문과 결합되어 스크립트를 간결하게 만듭니다.

 

✅ 어떻게 구분할까?

type cd # → cd is a shell builtin
type ls # → ls is /usr/bin/ls (외부 명령)

또는 Bash 전용으로:

enable         # 모든 builtin 목록 출력

✅ 외부 명령과의 차이

  • 내장 명령어: 셸 프로세스 내부에서 실행 → 빠르며 셸 상태를 직접 수정 가능
  • 외부 명령어: /bin, /usr/bin 등에 있는 실행 파일 → 기능이 방대하고 독립적으로 업데이트 가능

정리하면, 리눅스에도 DOS·Windows처럼 “내부 명령어”가 있으며, 이를 “셸 빌트인(builtin)”이라고 부른다는 점만 이름이 다를 뿐 개념은 동일합니다.

 

 

이어지는 포스팅은 너무 흔하게 사용하고 있어서 지나칠 수 있는 MS OS(= DOS, Windows) 의 내부명령어에 대해서 Chat GPT의  도움을 받아서 작성해 보았습니다.

 

728x90
반응형

0%
Buy Me A Coffee
Thank you for visiting. You can now buy me a coffee.