codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
노트›environment

Windows 와 macOS 의 개발 환경 차이

2026-04-28 게시· 2026-05-18 갱신·0회 조회

Windows 와 macOS 의 개발 환경 차이

같은 언어, 같은 코드라도 운영체제가 달라지면 경로·줄바꿈·셸·권한 같은 기초 항목이 달라집니다. Linux 는 macOS 와 가까운 쪽으로 분류됩니다 (둘 다 Unix 계열).

1. 두 OS 에 대한 이야기

Windows 는 1985 년 Microsoft 가 출시한 GUI 운영체제. NTFS · cmd.exe · PowerShell · WSL2 같은 자기 길을 따라왔습니다. macOS 는 2001 년 Mac OS X 로 시작 — Unix 계열 BSD 위에 자체 GUI. 같은 코드를 두 환경에서 돌리는 자리에서 둘의 차이가 드러납니다.

2. 경로 구분자

  • Windows — 전통적으로 역슬래시 (\). C:\Users\name\project.
  • macOS · Linux — 슬래시 (/). /Users/name/project.

다만 Windows API 자체는 슬래시도 받아들입니다. C:/Users/name 형태도 대부분의 Win32 호출에서 동작. 다만 cmd.exe 는 슬래시를 옵션 도입자로 해석할 때가 있어 (dir /w) 조심. PowerShell 은 양쪽을 폭넓게 받음.

언어 표준 라이브러리는 보통 OS 별 구분자를 추상화합니다. Python 의 pathlib, Node 의 path.join, Java 의 Paths.get. 하드코딩한 \\ 보다 이 추상화를 쓰는 편이 이식성이 좋음.

3. 줄바꿈 (line endings)

  • Windows — CRLF (\r\n, 0x0D 0x0A). DOS 시절 텔레타이프 관습의 잔재.
  • macOS (현대) · Linux — LF (\n, 0x0A).
  • macOS Classic (OS 9 이하) — CR (\r). 현재는 사실상 등장하지 않음.

git 은 이 차이를 core.autocrlf 와 .gitattributes 로 다룹니다.

설정값 동작
true (Windows 기본 권장) 체크아웃 시 LF→CRLF, 커밋 시 CRLF→LF.
input (macOS · Linux 권장) 커밋 시 CRLF→LF, 체크아웃은 그대로.
false 변환 없음.

.gitattributes 에 * text=auto 또는 파일별 eol=lf 를 명시하는 편이 더 안전한 SSOT.

4. 파일 권한 모델

Unix (macOS · Linux) — mode bits 로 user/group/other 의 r/w/x 를 표현. chmod 755 · chmod +x. 실행 가능 비트가 따로.

Windows (NTFS) — ACL (Access Control List). 사용자·그룹별로 더 세분된 권한을 ACE 단위로 부여. 실행 여부는 확장자 (.exe · .bat · .ps1) 와 실행 정책으로 정해지며 별도 실행 비트는 없습니다.

git 은 Unix 실행 비트를 추적합니다 (100755 vs 100644). Windows 에서 chmod +x 를 실행해도 의미가 약하므로 git update-index --chmod=+x 로 직접 비트를 설정.

5. 패키지 매니저

OS 주요 매니저 특성
macOS Homebrew 사실상 표준. brew install.
macOS MacPorts 더 오래된 대안. 의존성을 자체 격리해 빌드.
Windows winget Microsoft 공식. Windows 10 1809+ 기본 탑재.
Windows Chocolatey 가장 오래되고 패키지 수가 많음.
Windows Scoop 사용자 디렉터리 설치, 관리자 권한 불요.

Linux 는 배포판별로 apt (Debian/Ubuntu), dnf (Fedora/RHEL), pacman (Arch).

6. 기본 셸

  • macOS — 10.15 Catalina (2019) 부터 zsh 기본. 이전에는 bash (Apple 이 GPLv3 회피로 zsh 전환).
  • Windows — PowerShell (현대), cmd.exe (레거시). Windows Terminal 이 기본 호스트.
  • Linux — 배포판마다 다르나 bash 가 일반적이며 일부에서 dash 가 /bin/sh 로 연결.

7. 대소문자 구분 파일시스템

  • macOS APFS — 기본 비구분 (case-insensitive, case-preserving). Foo.txt 와 foo.txt 는 같은 파일.
  • Linux ext4 — 구분. 둘은 다른 파일.
  • Windows NTFS — 기본 비구분. 다만 Windows 10 1803+ 부터 디렉터리별 구분 옵션.

git 은 파일명을 구분해서 추적합니다. macOS · Windows 에서 동작하던 코드가 Linux CI 에서 import 실패로 깨지는 사례가 흔히 이 차이에서.

8. WSL2 의 위치

WSL2 (Windows Subsystem for Linux 2) 는 Windows 위에서 진짜 Linux 커널을 가상화로 돌리는 구조. 2019 년부터 제공되었고 Hyper-V 기반의 경량 VM.

  • 파일시스템 — 리눅스 측은 ext4, Windows 측은 NTFS. 교차 접근 시 I/O 가 느리므로 프로젝트 파일은 가급적 한쪽 (보통 WSL 내부 ~/).
  • 셸·도구 — 진짜 bash, 진짜 apt. Docker Desktop 도 WSL2 백엔드를 사용.
  • VS Code — Remote-WSL 확장으로 Windows 에서 편집·디버깅이 매끄러움.

Windows 사용자가 Unix 환경을 원할 때 가장 통합도가 높은 선택지.

9. 같은 작업의 두 표기

작업 macOS (zsh/bash) Windows (PowerShell)
환경변수 설정 export FOO=bar $env:FOO = "bar"
환경변수 읽기 echo $FOO echo $env:FOO
홈 디렉터리 ~ ~ 또는 $HOME
명령 연결 (성공시) a && b a; if ($?) { b } (5.1) / a && b (7+)
파일 권한 부여 chmod +x script.sh (NTFS ACL · 실행정책)

10. 자주 걸리는 자리

.sh 스크립트가 Windows 체크아웃 시 CRLF 로 변환되어 ^M 에러로 실패하는 경우 — .gitattributes 에 *.sh text eol=lf 를 명시하면 막힘.

macOS 에서 동작하던 import 가 Linux CI 에서 실패 — 파일명 대소문자 차이.

Windows 에서 PATH 변경 후 셸 재시작을 안 해 명령을 못 찾는 경우.

WSL 안에서 /mnt/c/... 로 Windows 파일을 다룰 때 권한·속도 이슈.

하고픈 말

OS 차이는 줄바꿈 · 경로 · 권한 · 셸 네 자리에서 자주 사고가 납니다. .gitattributes 의 * text=auto eol=lf 한 줄 + 언어 표준 라이브러리의 경로 추상화 + 셸 명령은 OS 별 동등 스크립트 셋이 표준 모양.

Next

  • shells-overview
  • bash-and-sh

Microsoft Learn Windows 파일 경로 · git-scm gitattributes · Apple zsh as default · WSL 2 문서 · Homebrew · winget 을 참고합니다.

environment 카테고리의 다른 글

카테고리 전체 보기 →
  • WSL2 — Windows 위의 Linux
  • 데이터 포맷 — JSON · YAML · TOML · XML
  • 터미널 첫날
  • 텍스트 인코딩과 줄바꿈
  • Markdown
  • 크로스 플랫폼 스크립트