처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.07.26 31

쉘의 콜론(:)은 아무 일도 하지 않는다 — 그래서 유용하다

Hacker News 원문 보기

셸 스크립트를 오래 다뤄 온 사람이라도 여전히 낯선 관용구를 만나는 순간이 있다. 원문 저자가 최근 겪은 것이 바로 그런 경우다. 식은 커피 옆에 새로 내린 뜨거운 커피가 놓여 있고, 세 개면 충분했을 터미널이 네 개나 열려 있으며, 정말 쓰고 싶지 않았던 스크립트를 억지로 붙들고 있던 밤. 그 상황을 구해 준 것이 다름 아닌 콜론 하나였다는 이야기다. 사소해 보이는 이 기호가 실무에서 어떤 의미를 갖는지, 그리고 어디까지 믿고 써도 되는지 정리해 볼 만하다.

인자 검증을 네 줄에서 한 줄로

스크립트가 몇 개의 인자를 받고 그중 일부가 필수라면, 대부분의 개발자는 거의 근육 기억처럼 if 문을 작성한다. 값이 비어 있으면 오류 메시지를 출력하고 종료하는, 익숙한 네 줄짜리 패턴이다. 저자가 주목한 것은 이 네 줄을 단 한 줄로 줄일 수 있다는 점이다. 핵심은 셸의 파라미터 확장(parameter expansion) 문법인 ${name:?diagnostic}에 있다. 이 문법은 $name이 설정되지 않았거나 비어 있는지를 검사한다. 조건에 걸리면 지정한 진단 메시지를 표준 에러(stderr)로 출력하고 셸을 0이 아닌 상태 코드로 종료시킨다. 반대로 값이 정상적으로 설정되어 있으면 그저 $name과 동일하게 동작한다.

실무적으로 반가운 부분은 진단 메시지에 변수 이름이 함께 포함된다는 점이다. 이름을 제대로 붙인 변수를 참조하면 오류가 났을 때 어떤 값이 비어 있었는지를 즉시 알 수 있다. 별도의 문자열을 손으로 짜 넣지 않아도 셸이 맥락을 담아 알려 주는 셈이라, 필수 인자 누락을 빠르게 잡아내야 하는 스크립트에서 특히 유용하다.

아무 일도 하지 않는 명령, 콜론

그런데 이 한 줄의 앞머리에는 또 하나의 콜론이 홀로 앉아 있다. 파라미터 확장의 콜론과는 다른 존재다. 줄 맨 앞의 :는 널 커맨드(null-command)로, 인자를 평가하기만 하고 그 결과는 버리는, 말 그대로 아무 일도 하지 않는 내장 명령이다. 역사도 깊다. 1971년 톰프슨 셸까지 거슬러 올라가며, 당시에는 레이블 역할을 겸했고 유닉스 최초의 주석 표시로도 쓰였다.

두 콜론이 왜 함께 필요한지는 셸의 동작 방식을 보면 분명해진다. 파라미터 확장 자체는 널 커맨드가 있든 없든 어차피 수행된다. 문제는 그다음이다. 앞에 아무것도 두지 않으면 셸은 확장 결과로 나온 문자열을 실행할 명령으로 간주해 버린다. 앞에 :를 붙이면 그 결과는 조용히 폐기되지만, 표현식 평가는 그대로 일어난다. 예컨대 ${HELLO:=123} 같은 확장을 널 커맨드와 함께 쓰면 결과는 버려지되 HELLO에는 123이 할당된다. 즉 검사나 기본값 설정 같은 부수 효과만 취하고, 실행이라는 원치 않는 동작은 막는 구조다.

왜 굳이 이렇게 쓰는가

결국 이 관용구의 매력은 타이핑을 줄이고 오타 가능성을 낮추는 데 있다. 저자의 표현을 빌리면, 콜론을 활용하면 잠재적 오타를 둘이 아닌 하나로 줄일 수 있다. 여러 줄의 조건문을 손으로 쓰다 보면 변수명을 두 번, 세 번 반복하게 되고 그만큼 실수할 지점도 늘어난다. 한 줄로 압축하면 그 표면적이 줄어드는 것이다. 물론 저자 스스로 인정하듯 이는 상당 부분 개인 취향의 영역이기도 하다.

실무자 입장에서 몇 가지 균형점은 짚어 둘 만하다. 이 기법은 간결함을 얻는 대신 셸에 익숙하지 않은 동료에게는 다소 암호처럼 보일 수 있다. ${name:?}와 널 커맨드의 조합이 무엇을 하는지 모르는 사람에게는 오히려 가독성이 떨어질 수 있고, 팀 코드베이스라면 짧은 주석 한 줄이 유지보수 부담을 덜어 준다. 또한 이 문법은 특정 프레임워크의 기능이 아니라 셸 자체의 오래된 기본기이므로, 스크립트를 짧게 다듬고 필수 인자 검증을 한곳으로 모으고 싶을 때 신뢰하고 꺼내 쓸 수 있는 도구다. 커피가 식기 전에 스크립트를 마무리해야 하는 밤이라면, 이 작은 콜론 두 개를 익혀 두는 편이 분명 도움이 된다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.