본문 바로가기
C.W.K.
Stream
Lesson 05 of 12 · published

홈·현재·상위 경로: ~ . ..

~10 min · tilde, shortcuts, navigation

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

경로를 짧고 정확하게 쓰는 네 기호

경로를 다룰 때 가장 자주 만나는 기호는 ~, ., .., -야. 짧지만 각각 가리키는 위치와 해석하는 주체가 달라.

  • ~는 현재 사용자의 홈 디렉터리를 뜻해. 셸이 명령을 실행하기 전에 이 기호를 $HOME 값으로 펼쳐.
  • .은 현재 디렉터리를 뜻해. ./script.sh처럼 쓰면 경로에서 찾은 명령이 아니라 지금 디렉터리에 있는 파일을 실행하겠다는 뜻이 돼.
  • ..은 부모 디렉터리를 뜻해. cd ../../grandparent처럼 여러 번 이어서 상위 경로로 올라갈 수 있어.
  • -cd와 함께 사용해서 직전에 있던 디렉터리로 돌아갈 때 써.

사용자 이름을 붙인 물결표

~만 쓰면 현재 사용자의 홈이고, ~alice는 Alice의 홈을 가리켜. 필요한 접근 권한이 있다면 여러 사용자가 함께 쓰는 서버에서 편리해. 1인용 Mac에서는 드물지만 오래된 Linux 스크립트에서는 자주 보여.

물결표와 중괄호 확장

물결표는 실제 디렉터리 이름이 아니라 셸 문법이야. 그래서 cp ~/.zshrc ~/.zshrc.bak는 홈 경로로 펼쳐지지만, 작은따옴표로 감싼 '~/file'은 문자 그대로 남아. 따옴표가 셸 확장을 막기 때문이야.

닷파일 관례

Unix에서는 이름이 .으로 시작하는 파일을 숨김 파일로 다뤄. .zshrc, .bashrc, .git, .env가 대표적이야. 일반 ls에서는 보이지 않고 ls -A로 확인할 수 있어.

물결표는 셸이 먼저 펼쳐

~는 모든 프로그램이 알아듣는 일반 경로 문자가 아니야. 셸은 명령 실행 전에 이를 홈 경로로 바꾸지만 "~"나 설정 파일 안의 문자열은 그대로 남을 수 있어. 스크립트나 앱 설정에서는 명시적인 홈 변수를 쓰는 편이 안전해.

점 두 개도 권한을 건너뛰지는 못해

경로에 ..를 넣어 부모 디렉터리를 가리켜도 실제 경로의 각 디렉터리를 통과하려면 실행 권한이 필요해. 경로가 맞아 보이는데 접근이 거부되면 마지막 파일만 보지 말고 모든 디렉터리 구성 요소의 권한을 확인해.

짧은 기호를 만날 때마다 파일 시스템과 셸 가운데 어느 층이 해석하는지 먼저 구분해.

확장이 끝난 실제 경로를 출력해 보면 추측을 증거로 바꿀 수 있어.

Code

~ 자유자재·bash
cd ~
ls ~/.zshrc ~/.config/
cp ~/.zshrc ~/Desktop/zshrc-backup
echo '~ inside single quotes is literal'
echo "~ inside double quotes is also literal: ~/test"

External links

Exercise

echo ~, echo '~', echo "~", echo $HOME을 차례로 실행해 어떤 입력이 실제 홈 경로로 확장되고 어떤 입력이 글자 그대로 남는지 비교해. 이어서 cd ~/.config, cd .., cd -를 사용해 현재 위치와 이전 위치를 오가 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.